您好有办法从与该表单无关的类调用buttonclick event
中的Form
吗?
答案 0 :(得分:1)
如果您可以抓住按钮本身(例如,通过询问Form
其Controls
集合等),您可以拨打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);