委托事件窗体传值

最近一直被C#的委托事件困扰,不知道该怎么具体运用,在网上看了很多资料,很多都是烧水,鸿门宴,打招呼,说实话我也是看了那些通俗的例子才对委托有了初步的了解,知道大概的过程是怎么样的,但是具体到窗体里面还是有点陌生,之后就又找了很多窗体传值的案例看了一下,觉得大家写的都很不错,今天是开博客的第一天,记录一下委托事件,谈一下感受,也方便之后自己温习。

先把程序结果粘一下:

程序运行过程:开始程序弹出Form1,点击编辑数据弹出Form2,然后进行数据的录入,数据录入完毕点击确定,关闭Form2,并将值传到Form1。

委托事件的概念网上很多,就不阐述了,委托事件在用的时候只要分清楚谁是发起者谁是订阅者就可以了,发起者(主人)应该有一个委托(命令),然后还要有一个事件什么时候发起这个命令,在订阅者(部下)里面应该有订阅事件(接受命令)。下面是主要代码:

Form2中的代码:

public delegate void sendEventHander(string text);  //定义委托
    public partial class Form2 : Form
    {
        public event sendEventHander sendEvent; //定义事件
        public Form2()
        {
            InitializeComponent();
        }

        private void btnTrue_Click(object sender, EventArgs e)
        {
            if(this.sendEvent != null)
            {
                sendEvent(btfrm2.Text);
            }
        }
    }
From1中的代码:

Form2 frm2 = new Form2();
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            frm2.Show();
        }
        public void getText(string s)
        {
            this.tbfrm1.Text = s;
            frm2.Hide();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            frm2.sendEvent += new sendEventHander(this.getText);  //订阅事件
        }
在这个例子中,Form2就是发起者,点击button按钮将命令发出,因为Form1订阅了Form2的命令,所以点击Form2的按钮时在Form1中就会执行命令即将Form2中的数据传到Form1的Textbox中。

个人觉得看的再多都不如自己动手敲一下代码尝试一下,只要有点理解就可以动手按照自己的理解去实践一下,即使自己在 看别人文章时候觉得看懂了,但是在实际代码中还是会遇到各种问题,只有自己亲身实践才能更快的成长,这是我第一次写文章,当然了以后有其他问题也会在博客中记录一下,方便日后自己回顾。第一次用博客,还不是很熟悉,起初看的委托是张子阳的打招呼跟雾中人的鸿门宴。文章Url不知道怎么添加,就直接把网址粘上来了。

http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx

http://www.cnblogs.com/yinqixin/p/5056307.html

本人还是一个新手,刚进入这个行业,如果有什么地方理解不对,欢迎大家指正,谢谢。



猜你喜欢

转载自blog.csdn.net/PLF_1994/article/details/77366560