日期:2014-05-19  浏览次数:20667 次

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);