该应用程序有两种形式。主要形式(表格#1)使用线程。其中一个线程用于从TCP / IP套接字读取参数。一旦特定参数的值发生变化,我想在第二个表单(表单#2)的文本框中显示这个新值。
我列出了我认为是下面代码的重要部分。
表1:
//Resetting the manually adjusted 'gusBundlesPlacedOnPallet' parameter
if (gusBundlesInRow > 0)
{
gusBundlesInRow = 0;
//Update the 'BundlesOnPallet' display on the 'Manual Page' frmManualMode ManualMode = new frmManualMode();
ManualMode.NoOfBundlesInPalletizerDisplay(Convert.ToString(iIncomingMsg[15]));
}//End-if
表2:
//Creating a NoOfBundlesInPalletizer Delegate
public delegate void NoOfBundlesInPalletizerDisplayDelegate(string sMessage);
public void NoOfBundlesInPalletizerDisplay(string sMessage)
{
if (txtBundlesInPalletizer.InvokeRequired)
{
Invoke(newNoOfBundlesInPalletizerDisplayDelegate(NoOfBundlesInPalletizerDisplay), new object[] { sMessage });
}//End-if
else
{
this.txtBundlesInPalletizer.Text = sMessage;
}//End else-if
}//End method NoOfBundlesToPalletizeDisplay
表单#2上的文本框不会显示新值,但如果我在将新值分配给文本框(sMessage)后插入断点,则它确实包含正确的值。 此外,如果我关闭第二个表单然后重新打开它,它将显示正确的值。在我看来,我需要某种“刷新”文本框值?
谁能告诉我我做错了什么?
提前致谢
Terje
答案 0 :(得分:0)
根据我的经验,控制元素总是自动更新。但你可以试试Control.Refresh();