关于winform用show()实现部分showdialog()功能,ManualResetEvent
老潇 2012-08-07 03:59:30 我用的是Mdi窗口,有一个主窗口MainForm,两个子窗口FrmA和frmB,frmA打开frmB,要实现show()后面的代码不执行,不能使用showDialog,因为如果使用showDialog的话,那么MainForm里面其他窗口和控件都不能获得焦点
现在用了线程阻止的方式实现,有一个问题,看下面的方法,当form窗口打开后,里面获得焦点的texbox的光标不会闪,或者说闪得很慢,有无办法解决?,关闭waitOne中的毫秒数也不行,一样不能流畅闪动,还是会卡很久
public static void ShowMyDialg(Form form)
{
using (System.Threading.ManualResetEvent mRest = new System.Threading.ManualResetEvent(false))
{
form.FormClosed += delegate(object sender, FormClosedEventArgs e) { mRest.Set(); };
form.Show();
while (!mRest.WaitOne(30))
{
Application.DoEvents();
}
//这里的代码只有当form关闭后才能执行
mRest.Close();
MessageBox.Show("窗口已关闭!");
}
}