用FindWindow API 判断是否已经有对话框显示了。用法是:
if (FindWindow(null, "信息提示") != 0)
    ...

解决方案 »

  1.   

    请参考,注意引用;
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
    using System.Threading;
    using System.Threading.Tasks;
    using Microsoft.VisualBasic.ApplicationServices;namespace Name.STP.WinForms
    {
    static class Program
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false); SingleInstanceManager manager = new SingleInstanceManager();
    manager.Run(args);
    } public class SingleInstanceManager : WindowsFormsApplicationBase
    {
    public SingleInstanceManager()
    {
    this.IsSingleInstance = true;
    } protected override bool OnStartup(Microsoft.VisualBasic.ApplicationServices.StartupEventArgs e)
    {
    ... mainForm = new Name.STP.WinForms.MainForm();
    Application.Run(mainForm); return false;
    } protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)
    {
    mainForm.WindowState = FormWindowState.Normal;
    mainForm.Show();
    mainForm.Activate();
    base.OnStartupNextInstance(eventArgs);
    }

    private Name.STP.WinForms.MainForm mainForm;
    }
    }
    }