我正在使用C#在WinForm中显示一些信息。当我从服务器收到信息时,我正在打开第二个 WinForm。我使用以下代码来显示第二种形式: 我遇到的问题是:第二个表单不再刷新。其上的任何控件(复选框、绘图等)都会停止刷新,并且新状态未知(例如复选框不会刷新新状态)。我是否以错误的方式使用 Invoke()...
任何帮助将不胜感激。
private void ShowChartForm(){
if ((ChartViewForm == null) || (ChartViewForm.IsDisposed)){
ChartViewForm = new ChartForm();
}
try
{
if (this.InvokeRequired)
this.Invoke(new MethodInvoker(delegate
{
ChartViewForm.Show(this);
}));
else
{
ChartViewForm.Show(this);
}
}
catch
{
}
}
我没有跨线程消息,但表单不刷新。
除非你启动了一个新线程,否则不需要Invoke。不要在同一张表格上拨打
Show
两次。重新激活现有的或创建一个新的。
private void ShowChartForm()
{
if (ChartViewForm == null || ChartViewForm.IsDisposed) {
ChartViewForm = new ChartForm();
ChartViewForm.Show(this);
} else {
ChartViewForm.WindowState = FormWindowState.Normal;
ChartViewForm.BringToFront();
}
}
或
private void ShowChartForm()
{
if (ChartViewForm != null && !ChartViewForm.IsDisposed) {
ChartViewForm.Close();
}
ChartViewForm = new ChartForm();
ChartViewForm.Show(this);
}