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

时间:2021-12-01 19:31:08


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

现在存在一个问题 我打开选项卡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();
}
}