我需要一些帮助来连接两个窗体。我需要的是,当按下表单2中的按钮时,表单一会激活某种方法吗?我尝试过使用事件,但我无法使用它。
答案 0 :(得分:0)
public class Form1
{
private Form2 form2;
public Form1(Form2 frm2)
{
form2 = frm2;
form2.ButtonClicked += button_clicked
}
public void button_clicked(object sender, EventArgs e)
{
frm1btn_click(null, null);
}
}
public class Form2
{
public event EventHandler ButtonClicked;
Public Form2()
{
}
public void frm2btn_click(object sender, EventArgs e)
{
if(buttonClicked != null)
{
buttonClicked(null, null);
}
}
}
public class main
{
public static void main(string[] args)
{
Form2 form2 = new Form2();
Form1 form1 = new Form1(form2);
}
}
这是您活动的基本理念。当form2中的按钮单击时,触发您的事件。确保form1正在监听事件(即+ =行)。
您的主要方法应该实例化两种形式。
另请注意,这不是最佳做法。表单在彼此之间触发事件的情况并不常见,而且您很可能需要基础模型架构。
如果有代码,这也会更完整。
答案 1 :(得分:0)
不是试图处理按钮的Click事件(你可以简单地做),而是更好地在按钮的Click事件处理程序中调用其他窗体的方法:
代码形式2:
//You should set form1Instance=... somewhere in code
Form1 form1Instance;
public void button1_Click(object sender, EventArgs e)
{
//....
form1Instance.Method1();
}
Form1中的代码:
Public void Method1()
{
//...
}
答案 2 :(得分:0)
您可以使用 MVVM Light 的概念。 MVVM Light的Messenger
组件可以轻松地在类之间传递数据。
按照以下步骤操作:
1)点击 form2 中的按钮,然后编写如下代码:
// Sends a message with a Student object.
var student = new Student{ FirstName = "Gul", LastName = "Ershad" };
Messenger.Default.Send(student);
2)接收来自 form2 的传入消息至 form1 ,并编写如下代码:
// Registers for incoming Student messages.
Messenger.Default.Register<Student>(this, (student) =>
{
// Works with the Student object.
});
请阅读以下链接中的详细信息。它非常强大的类消息传递概念。
[MVVM Light][1]