WinForm学习第一帖----如何传递变量
Form1: textBox1 button1(打开窗体2) button2(退出)
Form2 textBox1 button1
如何在点击Form2的按钮时,使文本框中的值在Form1的文本框中显示,同时关闭Form2。
------解决方案--------------------设置form2.owern=form1
然后操作form2.Owner.文本框........
------解决方案--------------------Form1:button1_click
{
Form2 frm=new Form2(textBox1);
frm2.Show();
}
Form2:
private TextBox _txtbox;
public Form2(TextBox txtbox)
{
_txtbox=txtbox;
}
button1_click
{
_txtbox.Text=textBox1.Text;
}
------解决方案--------------------为什么不直接调用form2的实例呢?
------解决方案--------------------属性
回调
------解决方案--------------------form2加一个公用属性
------解决方案--------------------Form1中代码:
这样创建Form2
Form f = new Form2();
f.OnOk = ShowMessage;
增加方法
private void ShowMessage(string messgae)
{
if(this.InvokeRequired)
this.Invoke(new ShowMessageDelegate(ShowMessage),message);
else
this.textBox1.Text = message;
}
增加代理 private delegate void ShowMessageDelegate(string message);
Form2中代码:
private ShowMessageDelegate showmessage;
public evnet ShowMessageDelegate OnOK
{
add{showmessage+=value;}
remove{showmessage-=value;}
}
在按钮的事件中
if(showmessage!=null)
showmessage(this.textBox.Text);