• 事件与委托更新父窗体数据,简单比较


    1.委托更新父窗页面。

         例如,功能:父窗体A,子窗体B,由A打开B窗体,更新A窗体数据

          A窗体代码:

            public delegate void reflshPassenger();//声明委托

          
            private void btnAddPassenger_Click(object sender, EventArgs e)//打开B窗体按钮,并把委托窗体给B窗体
            {
                reflshPassenger reflshData = getPassengers;
                new FZ_Passengers("add", reflshData).ShowDialog();
            }

              private void getPassengers()

            {

                  //...dosomething

             }

         B窗体代码:

          A.reflshPassenger reflshpassenger; //声明A窗体委托

          public FZ_Passengers(string _strState, formSubmitOrder.reflshPassenger _reflsh)
            {
                InitializeComponent();
                strState = _strState;
                reflshpassenger = _reflsh;//接受主窗体传递过来的委托
            }

           //最后在需要调用的位置,调用即可:

           if(reflshpassenger!=null)

           {

            reflshpassenger()

           }

    2.基于事件:

      窗体A代码:

      B b;

      注册事件:

            B= new Frm_B();
              
                B.eventLookUp += new EventHandler(frm_ValueChanged);//注册事件,要在ShowDialog之前实现
                B.ShowDialog();

      实现事件:

                 if (B.strName != "")
                {
                    this.lb_Sub.Text = frm.strName.Trim();
                }
                else
                {
                    return;
                }

    B窗体代码:

     事件声明:

                       public event EventHandler eventLookUp;
                       public string strName { get; set; }//声明字符串

                       //在具体的位置实现事件

                         if (eventLookUp != null)
                    {
                        strName = dgv_DataSource.Rows[e.RowIndex].Cells["userName"].Value.ToString().Trim();
                        this.eventLookUp(sender, e);
                        this.Close();
                    }

            总结,基于事件的实现方法,更简单,效率也高点,后期的维护性也高些!~

  • 相关阅读:
    表单提交与后台PHP如何接口?
    json数组转普通数组 普通数组转json数组
    使用Memcache缓存mysql数据库操作的原理和缓存过程浅析
    int(3)和int(10)的区别
    CI 3.0.6 控制器打印base_url 地址不为 localhost的解决方法
    CI3.0控制器下面建文件夹 访问一直404 的解决方法
    http响应需要记住的状态码
    laravel 表单验证 正则匹配
    laravel 加中间件的方法 防止直接打开后台
    Laravel 设置时区
  • 原文地址:https://www.cnblogs.com/it888/p/3777368.html
Copyright © 2020-2023  润新知