WPF 中关于TabControl选项卡中UserControl的问题



最近在做一个快递项目,中间用到连接电子称进行称重

现在存在一个问题 我打开选项卡A中进行称重 正常

然后再打开选项卡B 在B中进行其它操作

然后关闭B或者选中选项卡A 这个时候会发现A中的重量一直不变

 

我用的是SerialPort 对串口数据进行的读取,代码如下

 interfaceUpdataHandle1111 = new HandleInterfaceUpdataDelegate(UpdateTextBox);//实例化委托对象 
            Sp.PortName = App.GetBalanceComName;
            Sp.BaudRate = App.GetBalanceBaud;
            Sp.Parity = Parity.None;
            Sp.StopBits = StopBits.One;
            Sp.DataReceived += new SerialDataReceivedEventHandler(Sp_DataReceived);

            Sp.ReceivedBytesThreshold = 1;
            try
            {
               
                Sp.Open();

                //ReceiveData(Sp);
            }
            catch
            {
                MessageBox.Show("连接电子称失败:端口" + App.GetBalanceComName + "打开失败!");
            }

 UnLoad事件

 private void UserControl_Unloaded(object sender, RoutedEventArgs e)
        {
            if (Sp.IsOpen)
            {
                Sp.Close();
            }
        }

在UserControl的UnLoad事件中添加的Sp.Close()事件

 

通过跟踪发现

在重新给选项卡A焦点的时候 Sp是关闭着的

 

后来通过网上查资料:得出重新打开选项卡相当于把UserControl重新加载了一遍

 

于是可以这样修改,在Load中加如下代码


if (_isFristLoad)
            {
                _isFristLoad = true;
            }
            if (!_isFristLoad)
            {
                if (!Sp.IsOpen)
                {
                    Sp.Open();
                }
            }



你可能感兴趣的:(WPF,电子称,WPF)