从 C# 类库打开新窗体时禁用对窗体的访问



我有两个窗口窗体Form1Form2以及一个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本身没有找到合适的所有者,则很可能意味着它正在工作线程上运行,这可能会导致一些非常讨厌的错误/问题。

最新更新