我在网上看到的例子,自己试了下,有FORM1和FORM2两个窗体,分别有Button1和TextBox1两个控件,如下图:
FORM1代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public delegate void mydelegate(string text);//定义一个委托
public event mydelegate myevent;//定义上诉委托类型的事件
private void button1_Click(object sender, EventArgs e)
{
Form2 fm2 = new Form2();
fm2.Show();
if (myevent != null)
{
myevent(textBox1.Text);
}
}
FORM2代码:
public Form2()
{
InitializeComponent();
}
string namedis;
private void button1_Click(object sender, EventArgs e)
{
Form1 fm1 = new Form1();
fm1.myevent += new Form1.mydelegate(givevalue);//订阅FORM1的事件,调用givevalue()方法.
textBox1.Text = namedis;
}
public void givevalue(string text) //用于修改textbox的方法
{
this.namedis = text;
}
向FORM1的TextBox1输入值,Button1触发传值和弹出FORM2;
FORM2的Button1触发在TextBox1中显示传过来的值。
现在问题来了:FORM2的TextBox1始终显示为空,得不到FORM1传过来的值。这是调试界面,myevent值为null,这是为什么啊?