来自外部 DLL 的窗体在最小化后不显示

Form from external DLL does not Show after being minimized

这可能是设计使然,但我还是会问 -

我在我的主项目中调用了另一个项目 dll 中的表单。它不是模态 (ShowDialog) 或 TopMost,我在创建表单后为其设置一个变量(“frm = New ...”),以便我可以检查它何时已创建(用户单击工具栏按钮创建最初。)

表单显示、触发事件等都非常完美。

但是,如果我将表单最小化,然后通过代码调用 frm.Show 将其恢复,则没有任何反应。表单保持最小化。

frm.Show 没有影响,似乎也没有触发任何其他事件。

恢复它的唯一方法是单击主窗体的任务栏图标,然后显示主窗体和最小化窗体(作为图标),然后单击最小化窗体的图标。

我已经尝试了各种事件(.Activate、.Show、.ShowDialog、.Focus),除了物理单击任务栏主应用程序图标然后选择它之外,没有什么会使其他窗体脱离其最小化状态。

还有,主应用不是MDI...

???

谢谢。

通常这应该按照@jimi

的建议进行
[TheForm].WindowState = FormWindowState.Normal

但有时由于某些不明原因这不起作用,因此您可以使用其他一些方法

form.Show();
form.BringToFront();
if (form.WindowState == FormWindowState.Minimized)
{
    ShowWindowAsync(form.Handle, 9); // 9 = SW_RESTORE
}

我相信其中之一可以解决您的问题