c#子窗体与父窗体相互控制

 

 

在word软件中,常常会使用查找功能,当点击查找时查找界面不会消失,但是会在文档中查找到需要的内容。在设置字体大小或者是颜色的时候会有个应用按钮或者是预览按钮,这个时候会对文档的内容进行修改但是不会关闭窗口,这两种情形就是子窗体控制父窗体的两种形式,怎样去解决这种问题呢,这里采用的是事件的相互订阅。

1、新建工程,创建两个窗体,form1和form2

2.显示子窗体的代码如下:

 

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm = new Form2(this);//传递窗体1指针
            frm.Show(this);//窗体不会置于父窗体的外边
        }

  窗体2构造函数添加参数

        public Form2(Form1 frm)//传递窗体1,为绑定窗体1的事件做准备
        {
            InitializeComponent();
        }

3.父窗体定义事件,子窗体订阅事件

父窗体定义事件,修改子窗体
       
     public delegate void changetxt(string text); public event changetxt changetxt_event;  

子窗体订阅

        public Form2(Form1 frm)
        {
            InitializeComponent();
            frm.changetxt_event += new Form1.changetxt(frm_changetxt_event);
        }

        void frm_changetxt_event(string text)
        {
            textBox1.Text = text;
        }  

4.子窗体定义事件,父窗体订阅事件

子窗体定义事件

        public delegate void changetext(string text);
        public event changetext changetext_event;

父窗体订阅事件

        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.相互触发事件实现窗体通信

        private void button1_Click(object sender, EventArgs e)
        {
            changetext_event(textBox1.Text);
        }

6.最终效果

 

7.代码截图

 form1.cs

form2.cs

 

转载于:https://www.cnblogs.com/giserpan/p/6906624.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值