总是在最上面的形式,但需要消息框和组合框
本文关键字:消息 组合 | 更新日期: 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才会被重新启用