从类中调用Form中的事件

时间:2011-03-03 07:39:49

标签: c#

您好有办法从与该表单无关的类调用buttonclick event中的Form吗?

3 个答案:

答案 0 :(得分:1)

如果您可以抓住按钮本身(例如,通过询问FormControls集合等),您可以拨打Button.PerformClick。我会说这通常是一个坏主意。如果表单要让您执行特定操作,则应将其公开为公共或内部方法 - 然后从单击处理程序中调用该方法。

答案 1 :(得分:0)

MVP模式专为此分离而设计​​。这与@Jon Skeet在他的回复中所说的类似,但执行代码与该类分开。

public class Presenter
{
     public void DoStuff() {};
}

public MyForm : Form
{
     private Presenter presenter;
     public MyForm()
     {
        presenter = new Presenter();
     }

     private void OnButtonClick(object sender, EventArgs e)
     {
         presenter.DoStuff();
     }
}

现在您可以调用click处理程序,但将表单保留在调用路径之外。

答案 2 :(得分:0)

在类声明中,我有方法Button Click,它将从Button Click事件的表单中调用。

class Myclass
{
    public Myclass()
    {

    }

    public void ButtonClick(object sender, EventArgs e)
    {
        MessageBox.Show("Button Click");
    }
}  

在你从按钮中分配事件:

Myclass c= new Myclass();
        button1.Click += new EventHandler(c.ButtonClick);