我有两种形式。
- 其中一个是主窗体(我们称之为MainForm)
- 另一个是显示一些警告(我们称之为dialogForm)
. dialogForm中有一个标签。当我在MainForm中点击一个按钮时,dialogForm打开。但是dialogForm中的标签是空的。它实际上没有时间加载。我想检查dialogForm是否完全加载,然后进程可以在MainForm中继续。例如:
dialogForm tempFrm = new dialogForm();
tempFrm.Show(); // I want to wait till the dialogForm is fully loaded. Then continue to "while" loop.
while(..)
{
...
}
6条答案
按热度按时间vkc1a9a21#
为什么不创建一个布尔值和一个访问它的方法呢?
6l7fqoea2#
您可以尝试以下操作
你也可以看看这个
Notification when my form is fully loaded in C# (.Net Compact Framework)?
yhqotfr83#
因此,您需要使用表单
Shown
事件:但是你会遇到另一个问题。它会阻塞线程。你需要通过利用
BackgroundWorker
或Thread
在另一个线程上运行这个while
循环。watbbzwu4#
while(...)阻塞了UI线程,因此子窗体将永远不会收到消息,也不会被加载。
为了实现你的目标,你应该订阅Load事件并在处理程序中继续你的代码。
r8xiu3jd5#
可以使用Form.IsActive属性。
或者只是;
并检查YourForm.IsFormLoaded是否为true或false
lyfkaqu16#
您可以检查窗体的
Created
属性。获取一个值,该值指示控件是否已创建。
https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.control.created?view=windowsdesktop-8.0
下面是我如何使用它来检查在从另一个线程激活
Form
之前,它是否已经被创建: