始终在顶部形式,但需要消息框和组合框

时间:2013-01-04 13:15:43

标签: c# combobox modal-dialog messagebox

我有一个设置为始终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");

1 个答案:

答案 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关闭后才能重新启用计时器