c#窗体间传值-----补完

来源:互联网 发布:淘宝上苹果6二手能买吗 编辑:程序博客网 时间:2024/05/17 02:40

通过事件处理 窗体间数据传递:

先定义并实现自定义的事件:

//选项设置事件参数类
    public class SelectRezultEventArgs : EventArgs
    {
        private DataTable tableDataSelect;

        //构造函数
        public SelectRezultEventArgs(DataTable tableDataSelect)
        {
            this.tableDataSelect = tableDataSelect;
        }

        //读取参数
        public DataTable m_tableDataSelect
        {
            get { return this.tableDataSelect; }
        }
    }

同事声明一个委托,用来委托自定义的事件:

public delegate void SelectRezultEventHandler(object sender, SelectRezultEventArgs e);

 

在需要发生事件的 窗体中加入:

一个事件的声明:

        public event SelectRezultEventHandler SelectRezult;

  //引发SelectRezultEventArgs 事件
        protected virtual void OnSelectRezult(SelectRezultEventArgs e)
        {
            if (SelectRezult != null)
            {
                SelectRezult(this, e);
            }
        }

需要发生事件的函数体内:

             SelectRezultEventArgs args = new SelectRezultEventArgs(dtSelecData);

             OnSelectRezult(args);

 

另一个窗体中,使用传递过来的数据:

private void form_OptionSettingChanged(object sender, SelectRezultEventArgs e)
        {
            DataTable newPath = e.m_tableDataSelect;
            ultraGridPutOut.DataSource = e.m_tableDataSelect;

            MessageBox.Show(this, String.Format("新路径为“{0}”。", newPath.TableName), "提示");
        }

发生事件的窗体调用:

 FormSelectQuery formQuery = new FormSelectQuery(m_DataManager);
                        if (bShow(formQuery))
                        {
                            //注册事件
                            formQuery.SelectRezult += new SelectRezultEventHandler(form_OptionSettingChanged);
                            formQuery.Show();
                        }

 

done!

原创粉丝点击