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