zoukankan      html  css  js  c++  java
  • 转:c#委托事件实现窗体传值

    效果图下如下:开始启动的是窗口1,打开窗口2后,在窗口1中textBox1开始输入,窗1中的内容同时显示在窗2 textBox1中。

    要想在窗口2中显示窗1的信息,首先,要建立一个刷新窗2中textBox1的方法,如下:

      public void updatetxt(string txt)
            {
                this.textBox1.Text = txt;
            }     

    有了方法后,就要考虑第二个问题,如何把窗1传中的东西传过来,靠什么传?

    这就要建卡一个事件,靠事件来生成要传送的数据,然后通过委托来传递到窗2,所以要建卡一个委托,这个委托带个参数,参数值就是窗1中

    textBox1的值

        public delegate void updatertxts(string s);
        public event updatertxts udtxt;

    建立后事件后,最后一件事就是要注册事件并且订阅消息(我也是半懂,仅为自我理解需要)

    //注册事件

    private void textBox1_TextChanged(object sender, EventArgs e) { try { udtxt(((TextBox)sender).Text);//不一定需要这个,直接取值即可 } catch (SystemException err) { MessageBox.Show(err.Message); } }

    事件激发后,就差最后一步了,就是把这个“信”给送到窗2中,在哪里地方传出去。

    考虑到窗1与窗2的联系方式有一个,就是在窗1中打开窗2,那就在这里“报信”吧,

     private void button1_Click(object sender, EventArgs e)
            {
                Form2 form2 = new Form2();         
               
                    udtxt += new updatertxts(form2.updatetxt);
                    form2.Show();
                
            }

    运行程序,就能实现上面的效果啦。

    不过这里也有个问题,如果没有打开窗2,直接在窗1中(第一次中,如果窗口2打开后关闭又不会报错)输入内容,就会出现未将对你引用到实例的错误,求解中。

     

    if (udtxt != null)//这样写就好了
                    udtxt(((TextBox)sender).Text);
  • 相关阅读:
    REVERSE-Daily(4)-Elfcrackme2
    DES带IV向量加密解密工具
    Reverse-Daily(3)-DotNetCrackMe1
    Reverse-Daily(2)-wow
    C#:using和new关键字
    python3实现UDP协议的简单服务器和客户端
    python3实现TCP协议的简单服务器和客户端
    深入C++的运算符重载
    NLTK学习笔记(五):分类和标注词汇
    NLTK学习笔记(四):自然语言处理的一些算法研究
  • 原文地址:https://www.cnblogs.com/bantongshui/p/3192340.html
Copyright © 2011-2022 走看看