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();
                }
            }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值