【发布时间】:2018-07-04 07:25:23
【问题描述】:
我当时正在使用互斥锁来检查一个实例。它有效,但要完美,我需要修复一个错误。如果程序处于最小化状态,单击确定后它不会自行恢复。有任何想法吗?
这是在 Program.cs 中:
if (process.Id != current.Id)
{
SetForegroundWindow(process.MainWindowHandle);
MessageBox.Show(new Form1 { TopMost = true }, "Application is already running!");
Form1 f1 = new Form1();
f1.WindowState = FormWindowState.Normal; // dont work
f1.BringToFront(); // dont work
f1.Focus(); // dont work
break;
}
【问题讨论】:
-
您的 f1 变量不是指您现有的表单,而是一个新表单,这就是为什么在该变量上设置属性无效的原因。您是否正在尝试恢复现有表单?如果是这样,您需要获取对它的引用,或者如果它是在您的应用程序的另一个实例中运行的表单(听起来就是这样),则使用 pinvoke
-
.NET Framework 已经知道如何自动执行此操作:stackoverflow.com/a/19326/17034
-
是的,我想恢复现有的。获得参考的最简单方法是什么?