c#中如何实现调用另外一个窗体中的事件?

2024-10-31 20:32:20
推荐回答(4个)
回答1:

首先,form2需要知道form1的实例名称,两种办法,把form1句柄放到公共类,或者调用form2时传入(这里假设form2是由form1启动的)。
首先,无论哪种办法,form1中的函数声明为public
第一种办法:
定义一个公共静态类 public static class Common
静态类中定义一个静态变量 public static form1 myform1;
在form1 启动时,将自身对象赋值给公共静态类中的变量 Common.myform1= this;
在form2调用form1时是这样Common.myform1.initial

第二种办法,假设form2由form1启动,在form2中定义一个公共变量,public form1 myform1;
form1中启动form2过程:
form2 = new from2();
form2.myform1 = this
form2.show();

此时,form2中可以用myform1.initial调用

回答2:

把函数声明为public static,form2里面,用Form1.函数名的方式调用

回答3:

把方法传过去
form2 添加委托
delegate void MyDel(bool b)
添加一个button 改button_click事件
if(MyDel!=null) MyDel(true);

form1 需要把这个方法传递过去
需要form2在添加一个方法
void SetHandler(MyDel del)

当然还有更好的办法,委托也可行,但最好用事件

回答4:

把form1作为参数,传递给form2