public Form1()
{
InitializeComponent();
}
/// <summary>
/// 获取窗体句柄
/// </summary>
/// <param name="lpClassName"></param>
/// <param name="lpWindowName">窗体名称</param>
/// <returns>IntPtr 句柄</returns>
[DllImport("User32.dll")]
private static extern IntPtr FindWindow(String lpClassName, String lpWindowName);
[DllImport("User32.dll")]
public static extern int IsWindow(IntPtr hWnd);
/// <summary>
/// 该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。
/// 系统给创建前台窗口的线程分配的权限稍高于其他线程。
/// </summary>
/// <param name="hWnd">将被激活并被调入前台的窗口句柄</param>
/// <returns>如果窗口设入了前台,返回值为非零;如果窗口未被设入前台,返回值为零</returns>
[DllImport("User32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
private void button1_Click(object sender, EventArgs e)
{
IntPtr handle = FindWindow(null, "Form2");
if (IsWindow(handle) > 0)
{
SetForegroundWindow(handle);
}
else
{
Form2 f = new Form2();
f.Show();
}
}
c#winform 避免打开多个相同窗口!
最新推荐文章于 2019-08-28 16:13:57 发布