我正在尝试使用本文中的代码让您知道您的应用程序何时空闲..
如果您的应用程序只有一个表单,则此代码非常有用。您调用Application2.Run(myOnlyForm)
它,所有消息都会通过 Application2 中的过滤器进行路由。
但是,如果您在任何时候调用mySecondForm.ShowDialog()
该对话框都不会通过 Application2 过滤其消息。
有什么方法(没有不良副作用)让消息mySecondForm
通过“Application2”事件过滤器?
我努力了:
- 更改
mySecondForm.ShowDialog
为Application2.Run(mySecondForm)
.- 这会导致窗口在超出范围时不清理,并且在需要时不显示。
- 更改
mySecondForm.ShowDialog
为Application2.ShowDialog(mySecondForm)
. - 更改
mySecondForm.ShowDialog
为Application2.ShowDialog(mySecondForm, true)
(true = 清理对话框)。- 这不起作用,因为我需要在对话框关闭几次后访问它。
理想情况下,我想要一种将表单附加到 Application2 的消息功能的方法。
但我欢迎任何建议。
编辑:根据对 ctacke 的建议,这就是我所做的:
public static DialogResult ShowDialog2(this Form form)
{
//form.Activated += InsertMenu;
//Application2.ShowDialog(form);
form.Show();
try
{
do
{
Application2.DoEvents();
} while (form.Visible);
}
catch (ObjectDisposedException)
{
// This just means that the form was closed. Not a big deal.
}
return form.DialogResult;
}
我最终调用 ShowDialog2 而不是 ShowDialog