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

发布网友 发布时间:2024-10-23 21:54

我来回答

4个回答

热心网友 时间:2024-11-13 07:51

在.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();
         }

热心网友 时间:2024-11-13 07:52

在一个按钮事件里写如下代码

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

完成后运行,点看这个按钮,出来了OK;

热心网友 时间:2024-11-13 07:50

假设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了

热心网友 时间:2024-11-13 07:53

三种方法 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
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com