您的位置:首页 > 编程语言 > C#

c#中在一个窗体中触发另一个窗体的事件

2017-08-07 10:05 696 查看
创建两个窗体,分别为form1,form2,在form1中添加控件textBox1和button1,创建一个form2的对象Form2 b = null;

在form2中添加button1,定义委托和事件

 //定义委托

        public delegate void MyDelegate();

        //定义事件

        public event MyDelegate MyEvent;

给form2中的button1添加消息相应函数并做修改  

     private void button1_Click(object sender, EventArgs e)

        {

            if (MyEvent != null)

                MyEvent();//引发事件

            this.Close();

        }

在form1的代码中添加函数

     void b_MyEvent()

            {

                this.textBox1.Text += "已单击b窗体按钮\r\n";

            }

修改form1的构造函数

     public Form1()

            {

                InitializeComponent();

                b = new Form2();//实例化b窗体

                b.MyEvent += new Form2.MyDelegate(b_MyEvent);//监听b窗体事件

            }

为form1中的button1添加消息响应函数

    private void button1_Click(object sender, EventArgs e)

            {

                b.ShowDialog();

            }

这样当单击form1中的按钮时会弹出form2,当单击form2中的按钮时,form1中的textbox1会显示“已单击b窗体按钮”。

具体代码如下(vs 2005实现):

form1代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace form1

{

        public partial class Form1 : Form

        {

            Form2 b = null;

            public Form1()

            {

                InitializeComponent();

                b = new Form2();//实例化b窗体

                b.MyEvent += new Form2.MyDelegate(b_MyEvent);//监听b窗体事件

            }

            void b_MyEvent()

            {

                this.textBox1.Text += "已单击b窗体按钮\r\n";

            }

            private void button1_Click(object sender, EventArgs e)

            {

                b.ShowDialog();

            }

}

}

form2代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace form1

{

    public partial class Form2 : Form

    {

        public Form2()

        {

            InitializeComponent();

        }

        //定义委托

        public delegate void MyDelegate();

        //定义事件

        public event MyDelegate MyEvent;

        private void button1_Click(object sender, EventArgs e)

        {

            if (MyEvent != null)

                MyEvent();//引发事件

            this.Close();

        }

    }

}

文章来源:http://blog.163.com/liujiyun123@126/blog/static/4459677620108295850128/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c#