YY:对比一下系统自动添加的内容 this.openToolStripButton.Click += new System.EventHandler(this.OpenFile);
System.EventHandler() 通用型 ,如EventArgs
c#子窗体与父窗体相互控制
引自:https://www.cnblogs.com/giserpan/p/6906624.html
在word软件中,常常会使用查找功能,当点击查找时查找界面不会消失,但是会在文档中查找到需要的内容。在设置字体大小或者是颜色的时候会有个应用按钮或者是预览按钮,这个时候会对文档的内容进行修改但是不会关闭窗口,这两种情形就是子窗体控制父窗体的两种形式,怎样去解决这种问题呢,这里采用的是事件的相互订阅。
1、新建工程,创建两个窗体,form1和form2
2.显示子窗体的代码如下:
|
1
2
3
4
5
|
private void button1_Click(object sender,
EventArgs e)
{
Form2
frm = new Form2(this);//传递窗体1指针
frm.Show(this);//窗体不会置于父窗体的外边
}
|
窗体2构造函数添加参数
|
1
2
3
4
|
public Form2(Form1
frm)//传递窗体1,为绑定窗体1的事件做准备
{
InitializeComponent();
}
|
3.父窗体定义事件,子窗体订阅事件
|
1
|
父窗体定义事件,修改子窗体
|
|
1
2
|
<br> public delegate void changetxt(string text);
public event changetxt
changetxt_event;
|
子窗体订阅
|
1
2
3
4
5
6
7
8
9
10
|
public Form2(Form1
frm)
{
InitializeComponent();
frm.changetxt_event
+= new Form1.changetxt(frm_changetxt_event);
}
void frm_changetxt_event(string text)
{
textBox1.Text
= text;
}
|
4.子窗体定义事件,父窗体订阅事件
子窗体定义事件
|
1
2
|
public delegate void changetext(string text);
public event changetext
changetext_event;
|
父窗体订阅事件
|
1
2
3
4
5
6
7
8
9
10
11
|
private void button1_Click(object sender,
EventArgs e)
{
Form2
frm = new Form2(this);
frm.changetext_event
+= new Form2.changetext(frm_changetext_event);
frm.Show(this);
}
void frm_changetext_event(string text)
{
textBox1.Text
= text;
}
|
5.相互触发事件实现窗体通信
|
1
2
3
4
|
private void button1_Click(object sender,
EventArgs e)
{
changetext_event(textBox1.Text);
}
|
6.最终效果
7.代码截图
YY:对比一下系统自动添加的内容 this.openToolStripButton.Click += new System.EventHandler(this.OpenFile);
System.EventHandler()
通用型 ,如EventArgs
form1.cs
form2.cs