C# 中的子窗口怎么去订阅父窗口的事件?

bluesands_zhang 2013-05-17 02:44:30
父窗口订阅子窗口的容易

子窗口怎么订阅父窗口的怎么处理?
也就是让父窗口中一变量变化及时传递到至窗口中去
...全文
131 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
漫天雪飞 2013-05-17
  • 打赏
  • 举报
回复
只是个例子,不能跑,希望你能理解
漫天雪飞 2013-05-17
  • 打赏
  • 举报
回复
既然是父子关系,用自定义事件是可以解决问题的。这个最经典的窗口传值问题。 1.在子窗口定义一个事件 2.在父窗口中调用子窗口的地方将子窗口的事件注册,即指定自定义事件发生时处理事件的方法 3.在父窗口中写一个自定义事件发生时处理事件的方法,用于和2相关联 4.在子窗口需要回传值得地方触发事件 给你一个例子,自己看看


   /// <summary>
    /// 当数字键,空格,enter按下时,将值传回textbox
    /// </summary>
    /// <param name="str">要回传的值</param>
    public delegate void SetTextBoxValue(string str);//在命名空间下声明

    //子窗口
    public partial class ListForm1 : Form
    {
        public ListForm1()
        {
            InitializeComponent();
        }
        
         /// <summary>
        /// 用来将值回传到textbox
        /// </summary>
        public event SetTextBoxValue SetTxtValue;

        /// <summary>
        /// Listbox被选中的索引改变
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //得到原始的数据,去掉行号
            string strBackValue = GetOriginalItems(this.listBox1.SelectedItem.ToString());
            SetTxtValue(strBackValue);//将选中的Listbox中的值传回到要输入的文本框中,触发自定义事件
        }


    }

//父窗口
public partial class NurseDegree : Telerik.WinControls.UI.RadForm
    {
        private void lblInput_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
                    listForm.SetTxtValue += new SetTextBoxValue(listForm_SetTxtValue);//在父窗口订阅子窗口事件
         }
            /// <summary>
        /// 事件传值关联方法
        /// </summary>
        /// <param name="str">传回来的string</param>
        void listForm_SetTxtValue(string str)
        {
          //doSomething
        }
    }

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧