1

我有一个设置为始终在顶部的表单。我通过下面代码中显示的计时器每 500 毫秒强制执行一次。计时器正在从子线程启动。

表单有时必须引发错误,但这不是模态的,用户最终不得不单击它两次 - 一次使其成为模态,一次确认它(如果他们做得足够快)

用户还可以提出一个以主要形式的面板中的组合蛋白组合框)。

我怎样才能修复它是模态的消息框?我怎样才能修复组合框,它继续列出其中的项目而不清除谢谢 damo

计时器使表格始终位于顶部

// Restore the form.
this.Visible = true;
this.TopMost = true;
this.WindowState = FormWindowState.Maximized;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
this.Show();

消息框

MessageBox.Show(this,"hello world", "myApplication");
4

1 回答 1

1

只需在显示消息框之前禁用计时器并在显示消息框后重新启用:

timer1.Enabled = false;
MessageBox.Show(this,"hello world", "myApplication");
timer1.Enabled = true;

这当然可以在一种方法中,因此您不必复制代码:

public void ShowMessage(string title, string message)
{
   timer1.Enabled = false;
   MessageBox.Show(this,message, title);
   timer1.Enabled = true;
}

由于MessageBox.Show是阻塞命令,定时器只有在 MessageBox 关闭后才会重新启用

于 2013-01-04T13:19:20.033 回答