お世話になります。
下記のような処理でForm1.csの中でDataTableをCrystalReportViewerに出力していますが、
この処理を別クラス(clsCrystalReport.cs)を作りそちらに移行したいと考えております。
Form1.cs
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private bool PreviewReport(DataTable dt) { try { ReportDocument rptDoc = new ReportDocument(); rptDoc = new report.レポート名(); rptDoc.SetDataSource((DataTable)dt); //プレビューの表示 crystalReportViewer1.ReportSource = rptDoc; foreach (Control ctl in crystalReportViewer1.Controls) { foreach (Control ctlc in ctl.Controls) { if (ctlc.GetType() == typeof(TabControl)) { (ctlc as TabControl).SizeMode = TabSizeMode.Fixed; (ctlc as TabControl).ItemSize = new Size(0, 1); } } } crystalReportViewer1.Zoom(1); rptDoc.Refresh(); return true; } catch (Exception) { errMessage = "エラー"; return false; } } }
ネットで調べたサンプルを参考に、
Form1.cs
private void PreviewReport(DataTable table) { clsCrystalReports clsRpt = new clsCrystalReports(this); clsRpt.PreviewReport(table); }
clsCrystalReport.cs
public class clsCrystalReports { public Form1 _form1; public clsCrystalReports(Form1 form1) { _form1 = form1; //渡されたForm1をローカル変数へ } public bool PreviewReport(DataTable dt) { try { ReportDocument rptDoc = new ReportDocument(); rptDoc = new report.レポート名(); rptDoc.SetDataSource((DataTable)dt); //プレビューの表示 _form1.crystalReportViewer1.ReportSource = rptDoc; --☆ foreach (Control ctl in _form1.crystalReportViewer1.Controls) --☆ { foreach (Control ctlc in ctl.Controls) { if (ctlc.GetType() == typeof(TabControl)) { (ctlc as TabControl).SizeMode = TabSizeMode.Fixed; (ctlc as TabControl).ItemSize = new Size(0, 1); } } } _form1.crystalReportViewer1.Zoom(1); --☆ rptDoc.Refresh(); return true; } catch (Exception) { errMessage = "エラー"; return false; } } }
上記のようなソースを書きましたが、
☆部分で「'Form1.crystalReportViewer1'はアクセスできない保護レベルになっています」というエラーが発生しています。
どうすればForm1上のコントロールのアクセス権が得られるのかわからず困っています。
問題点の指摘をお願いします。
回答1件
あなたの回答
tips
プレビュー