我有两个窗口窗体Form1
和Form2
以及一个CLProduct
的c#类库。
现在,Form1
已经打开,并且调用了类CLProduct
方法,该方法显示Form2
,此时我想限制对Form1
的访问,直到关闭Form2
。
我在CLP产品中的方法中有以下代码,可以加载
var _frm2= new Form2();
_frm2.ShowDialog();
我知道ShowDialog
加载一个模态,默认情况下,当从 Form1 调用 ShowDialog
Form1 时,该模式会限制对 Form1 的访问,但在我的场景中,ShowDialog
实际上是从一个类调用的,由于显而易见的原因不会限制Form1
,因为它不是从Form1
调用
Form2 在 Form1 中创建的工作线程上运行,如下所示
if (pPBackgroundWorker.IsBusy == false)
{
// Start the asynchronous operation.
pPBackgroundWorker.RunWorkerAsync();
}
有没有办法从Form1_Load()
处理这个问题?
您应该能够简单地调用ShowDialog
进行From2
,并将Form1
作为参数传递并获得所需的行为。( _frm2.ShowDialog(_frm1)
)
但正如HansPassant在评论中指出的那样,如果Form2
本身没有找到合适的所有者,则很可能意味着它正在工作线程上运行,这可能会导致一些非常讨厌的错误/问题。