单击CustomizedMessageBox上的“确定”时,将禁用主窗体

时间:2013-01-15 09:49:49

标签: c# .net winforms messagebox

我创建了一个CustomizedMessageBox,这是一种继承的形式 我在SHOW()中创建了静态customizedMessageBox方法,该方法接受标题,消息,图标,按钮等。

我的问题是当我点击CustomizedMessageBox的“确定”时,调用CustomizedMessageBox.Show(...)的主要表单会被取消激活,即我系统上的其他应用程序会获得焦点。

这种情况并非总是发生,但CustomizedMessageBox至少被称为4-5次。请建议我该怎么做。

我在网上看到设置MDIParent可以解决这个问题,但在我的情况下,SHOW方法是静态的,所以我不能使用MDI父子概念。

代码详情如下:

//Calling static show method of Customized Message Box    
CustomizedMessageBox.Show("Data Not Found","Title", CustomizedMessageBox.CyButtons.Ok, CustomizedMessageBox.CyIcon.Error);    

class CustomizedMessageBox : Form    
{    

  static private CustomizedMessageBox _newMessageBox;    

  //CyButton and CyIcon are enums defined in CustomizedMessageBox class    
  static public DialogResult Show(string message, string title, CyButtons mButtons, CyIcon mIcon)    
  {    
   //Build Message Box by setting properties of "_newMessageBox"    
   _newMessageBox.ShowDialog();    
   //return DiaglogResult    
  }    
}  

1 个答案:

答案 0 :(得分:1)

你可以得到一个DialogResult,一旦点击确定,再次给你的父焦点。例如

if (CustomizedMessageBox.Show() == DialogResult.OK)
{
   this.Focus();
}