在我的程序中,我需要弹出模态窗口提示用户进行一些操作,一旦用户完成操作,模态窗口会自动关闭。
在一个线程中,代码将在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()
之后的代码。
要求是在用户完成某些操作后自动关闭模态窗口,并在关闭模态窗口后进行其他处理。
任何理想的解决方法并实施此要求?非常感谢。
答案 0 :(得分:1)
我不确定但你可以试试
myMsgBox.Close()
or
myMsgBox.Hide()
它可能会有所帮助
答案 1 :(得分:-1)
除非你有一个长时间运行或慢速运行,否则没有理由你应该用一个单独的线程使你的生活复杂化。只需在模态模式下显示对话框,然后在用户输入所需数据时继续。