发布网友 发布时间: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