我正在尝试使用 C# windows 窗体应用程序创建 GUI。我在 mainfrom 中编写了一种方法。我在一个用户控件中有两个复选框。当复选框更改时,我需要在主窗体中引发该事件并在该事件中运行我在 mainfrom 中编写的方法。我怎样才能做到这一点 ?。
问问题
2013 次
4 回答
0
在帮助中查找代表。您在主框中创建一个过程,在控件中创建一个委托,将委托设置为主过程中的过程并调用复选框。选中。
一项警告工作 - 检查委托不为空(表示未设置),否则您将收到错误消息。
于 2013-04-12T12:36:23.460 回答
0
public class MainForm : Form
{
public void YourMethod()
{
///
}
}
public class UserControl
{
private readonly MainForm _MainForm;
public UserControl(MainForm mainForm)
{
_MainForm = mainForm;
///add event for checkbox
}
private void Checkbox_Clicked(object Sender, EventArgs e)
{
_MainForm.YourMethod();
}
}
于 2013-04-12T12:40:55.050 回答
0
在您的用户控件中执行以下操作(来自我自己的自定义控件的示例,显然将其调整为您需要的:)):
public event EventHandler InnerDiagramCheckBox1CheckChanged;
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (InnerDiagramCheckBox1CheckChanged != null)
{
InnerDiagramCheckBox1CheckChanged(sender, e);
}
}
那么你可以在其加载或构造的主要形式中做的是:
instanceofyourcontrol.InnerDiagramCheckBox1CheckChanged+= new
System.EventHandler(nameofthefunctionyouwanttotriggerinthemainform);
您在这里所做的是将事件委托给您的用户控件:)
于 2013-04-12T12:41:15.680 回答
0
在用户控件中创建一个委托,并使其指向主窗体中的函数。为用户控件中的复选框创建 OnCheckedChanged() 事件,并在事件中调用委托方法。
看看这个例子
主窗体.cs
mainform_load()
{
// Initialize user control delegate object to point the method in mainform
usercontrol1.method= Method1;
...
}
// method to call from usercontrol
public void Method1()
{
}
用户控件1.cs
delegate void Method1()
public PointMyMethod method;
...
checkbox1_OnCheckedChanged()
{
// This calls the method in mainform
method();
}
...
希望能帮助到你
于 2013-04-12T12:46:56.720 回答