c#中如何实现调用另外一个窗体中的事件?
比如:有两个窗体,form和form2,form1中有一个时间initial(booleanadministration);这是个对form1中的控件的enable属性进...
比如:有两个窗体,form和form2,form1中有一个时间initial(boolean administration);这是个对form1中的控件的enable属性进行控制的初始化函数,我想在form2中调用这个函数,我该怎么做?
展开
4个回答
展开全部
首先,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调用
首先,无论哪种办法,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调用
追答
在fomr2增加一个公共变量,最上头,用来记录form1实例
public partial class form2: Form
{
public from1 theform1 //from2中加上这句,貌似你第二个窗口才叫form1,你第一个窗口叫什么,在这声明下?
//其他
public from1 ()
{
InitializeComponent();
}
form1 中调用from2时:
From1 parent = new from1();
parent.thefrom1=this;
...
展开全部
把函数声明为public static,form2里面,用Form1.函数名的方式调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把方法传过去
form2 添加委托
delegate void MyDel(bool b)
添加一个button 改button_click事件
if(MyDel!=null) MyDel(true);
form1 需要把这个方法传递过去
需要form2在添加一个方法
void SetHandler(MyDel del)
当然还有更好的办法,委托也可行,但最好用事件
form2 添加委托
delegate void MyDel(bool b)
添加一个button 改button_click事件
if(MyDel!=null) MyDel(true);
form1 需要把这个方法传递过去
需要form2在添加一个方法
void SetHandler(MyDel del)
当然还有更好的办法,委托也可行,但最好用事件
追问
没看懂!c#刚接触不久,好多都不懂,还请您在详细点,谢谢了
追答
恩,那就用最笨的方法 form2在构造函数前面添加form1 form1;
form2构造函数这样写
form2(form1 f1)
{ form1=f1;}
然后你就可以调用form1里面任何public的方法了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把form1作为参数,传递给form2
追问
可以具体点吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询