总是在最上面的形式,但需要消息框和组合框

本文关键字:消息 组合 | 更新日期: 2023-09-27 17:50:49

我有一个始终设置为顶部的表单。我通过一个计时器每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");

总是在最上面的形式,但需要消息框和组合框

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

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关闭后,timer才会被重新启用