我有一个设置为始终ontop的表单。我通过代码中显示的定时器每500 ms强制执行一次。 计时器正在从子线程启动。
表单有时会引发错误,但这不是模态的,用户最终必须单击两次 - 一次使其成为模态,一次确认(如果它们足够快)
用户还可以调出主窗体中面板中的组合框,但是当选择此选项时,由于计时器制作表单模式,下拉列表再次变得清晰(效果与用户刚刚相同)点击远离组合框。)
我如何修复它是模态的Messagebox? 如何修复组合框,它继续列出其中的项目而不清除 谢谢 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");
答案 0 :(得分: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关闭后才能重新启用计时器