0

我正在尝试使用 C# windows 窗体应用程序创建 GUI。我在 mainfrom 中编写了一种方法。我在一个用户控件中有两个复选框。当复选框更改时,我需要在主窗体中引发该事件并在该事件中运行我在 mainfrom 中编写的方法。我怎样才能做到这一点 ?。

4

4 回答 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 回答