0

在我的程序中,我需要弹出模态窗口提示用户进行一些操作,一旦用户完成操作,模态窗口就会自动关闭。

在一个线程中,代码将被阻塞,ShowDialog()之后的代码无法执行。主要源代码如下:

MyMessageBox myMsgBox = null

private void UserInputRead()
{
  myMsgBox = new MyMessageBox(); //customerized messageBox extends from Form
  //some operation
  Thread t1 = new Thread(UserInputListener);
  t1.start();
  myMsgBox.ShowDialog();
  Console.WriteLine("...after showDialog()");
}

在另一个线程中,它监视用户输入,如果满足要求则处理模态对话框。

private void UserInputListerner()
{
  //monitor user input 
  if(xxx) //user input meet the requirement
  {
     myMsgBox.Dispose()
  }
}

当用户输入满足要求时,模态对话框已经被释放,但是之后的代码ShowDialog()仍然无法执行,但是当我尝试使用Timer或者KeyEventHandler处理这个模态对话框时,之后的代码ShowDialog()可以被执行。

要求是当用户在关闭模态窗口后完成一些操作和一些其他处理时,自动关闭模态窗口。

任何理想的如何解决它并实现这个要求?提前非常感谢。

4

2 回答 2

1

我不确定,但你可以试试

myMsgBox.Close() 

or

myMsgBox.Hide() 

它可能会有所帮助

于 2013-08-26T14:17:12.420 回答
-1

除非你有一个长时间运行或缓慢的操作,否则你没有理由用一个单独的线程来复杂你的生活。只需在模式模式下显示您的对话框表单,并在用户输入所需数据后继续。

于 2013-08-26T14:09:29.007 回答