dbz*_*dbz 3 c# user-controls report winforms
众所周知,有些解决方案与此类似,但是我无法用它们解决问题。我有两个用户控件:
我有一个链接两个控件的主窗体。
这两个控件是在DLL中创建的,并添加到主窗体中,如下所示:
//ADDS THE FIRST CONTROL TO THE PANEL CONTROL
myDll.controlUserReport userControlA = new myDll.controlUserReport();
panelControl1.Controls.Add(userControlA);
userControlA.Dock = DockStyle.Left;
//ADDS THE SECOND CONTROL TO THE PANEL CONTROL
myDll.controlDocViewer userControlB = new myDll.controlDocViewer();
panelControl1.Controls.Add(userControlB);
userControlB.Dock = DockStyle.Fill;
Run Code Online (Sandbox Code Playgroud)
如何将controlUserReport单击一个按钮时在第一个控件中创建的Report对象传递给另一个用户控件controlDocViewer 以显示它?
您应该为此使用事件。在UserControlA声明事件中:
//Declare EventHandler outside of class
public delegate void MyEventHandler(object source, Report r);
public class UserControlA
{
public event MyEventHandler OnShowReport;
private void btnShowReport_Click(object sender, Report r)
{
OnShowReport?.Invoke(this, this.Report);
}
}
Run Code Online (Sandbox Code Playgroud)
在UserControlB订阅活动并显示报告中:
public class UserControlB
{
// Do it in Form_Load or so ...
private void init()
{
userControlA.OnShowReport += userControlA_OnShowReport;
}
private void userControlA_OnShowReport(object sender, Report r)
{
// Show the report
this.ShowReport(r);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1455 次 |
| 最近记录: |