wpf关于两个窗口之间的数据传输例程

我自己尝试编写上位机程序的时候遇到的一个问题就是,我在子窗口中设置好串口后,想把这个串口号更新到主窗口的UI上,但一直不成功,感觉是子窗口的传值失败导致的,就百度了相关的解决方案。有一个是创建主窗口的对象,通过对象点出来那个label的控件进行赋值,但这个方法失败了,我又参考别人的例子,尝试第二种方式,终于成功了,希望能对大家有所帮助。


    /*新类————————————新类*/
    //这是需要新建的类,事件响应
    public class PassValuesEventArgs : EventArgs
    {
        public string Value { get; internal set; }
        public PassValuesEventArgs(string Value)
        {
            this.Value = Value;
        }
    }

        /*主窗口——————————主窗口*/
        //这是主窗口的点击事件
        private void ItemCOM_Click(object sender, RoutedEventArgs e)

        {
            pages.ItemCOM aw = new pages.ItemCOM();
            //将主窗口设置为拥有者
            aw.Owner = this;
            //将AboutWindow的打开的初始位置设置为在Owner的中央
            aw.WindowStartupLocation = WindowStartupLocation.CenterOwner;
            aw.PassValuesEvent += new pages.ItemCOM.PassValuesHandler(ReceivedValues);
            aw.ShowDialog();
        }
        private void ReceivedValues(object sender, PassValuesEventArgs e)
        {
            LabelCOM.Content = "串口:" + e.Value;
        }

        /*子窗口————————————子窗口*/
        //用于传值
        public delegate void PassValuesHandler(object sender, PassValuesEventArgs e);
        public event PassValuesHandler PassValuesEvent;
        //这是子窗口的确定按钮的点击事件
         private void btnSure_Click(object sender, RoutedEventArgs e)
         {
            MainWindow mw = new MainWindow();
            String strPortName = null;
            if (comn.IsOpen == true)
            {
                strPortName = ComboBoxPortName.SelectedItem.ToString();
            }
            //将打开的串口号显示在主窗口中
            PassValuesEventArgs args = new PassValuesEventArgs(strPortName);
            PassValuesEvent(this, args);
            this.Close();//关闭该窗口
          }

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页