C#如何在窗体之间互相调用事件,急急。。

 我来答
匿名用户
推荐于2017-05-30
展开全部
在.NET中,窗体也被定义为一个类,所以要想调用窗体中的某个方法,除了要将要调用的方法设为public外,还得创建一个窗体类的实例。然而,在下面这种情况下,就是当我们打开了窗体1(有了此窗体的一个实例),接着打开了窗体2,接下来我们想通过触发窗体2中的某个事件来调用窗体1中的某个方法,而这时我们又不能再创建窗体的新的实例了,怎么办?
  解决的办法之一就是利用.NET中提供的System.EventHandler来实现。方法如下:
  建立一个有两个Form的WindowsApplication,在Form1和Form2中各添加一个Button,下面我们来添加一些代码。
  首先,先在Form2中添加。

  在Form2中添加一个System.EventHandler

         publlic event System.EventHandler CallMessage;

  在Form2中Button的Click事件中调用OnClicks

         private void button1_Click(object sender, System.EventArgs e)
         {
             this.CallMessage(sender,e);
         }

  接下来,在Form1中添加。
  在Form1中添加一个方法,方法的参数必不可少

         public void ShowMessage(object sender, EventArgs e)
         {
             MessageBox.Show("another form call this method!");
         }

  在Form1中Button的Click事件中创建一个Form2的实例,并加入Form2的CallMessage的实现方法

         private void button1_Click(object sender, System.EventArgs e)
         {
           Form2 frm=new Form2();
           frm.CallMessage+=new EventHandler(ShowMessage);
           frm.ShowDialog();
         }
匿名用户
2013-09-10
展开全部
假设Form1 中的有 button1_click()事件 ,Form2中有button2_click()事件,想点击button2_click()事件时调用button1_click().思路,---理解C#面向对象的开发机制将Form1窗体中的button1_click()事件Private 改成共有的Public在Form2窗体中定义:private Form1 form1; public Form1 form1; { get{return form1}; set{form1 = value}; } button2_click 调用时: this.form1.button1_click(sender, e);就Ok了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-10
展开全部
三种方法 1.把form1里的label1的访问属性private 改成public 2.在form1里写个public的方法 在方法中调用label1 form2调用这个方法 3.在form1里写个事件和委托前两种方法都需要在当form2实例化form1的时候将form2对象传给form1 Form1 f1 = new Form1(this); 这样就会增加窗口之间的偶合度用事件是最好也是最常用的办法 //form2里的定义 public delegate OnChangeLabel1(string newText); public event OnChangeLabel1 changeLabel1; //点击button1触发的事件 private void Button1Click(object sender, EventAgment e){ changeLabel1("我是中国人"); } //form1的构造方法里绑定form2事件 public Form1(){ form2.changeLabe1 += new EventHander(ChangeLabel1Method); } private void ChangeLabel1Method(string nText){ this.lable1.text = nText; } 0 回答者: jnc911
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-10
展开全部
在一个按钮事件里写如下代码

FormB frmB = new FormB();//为FormB声明一个对象
frmB.Show();//显示frmB()

完成后运行,点看这个按钮,出来了OK;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式