c#中让Windows窗体只运行一次,并在第二次启动窗体时激活该窗体

    技术2022-05-11  63

    我曾经用过Mutex的方法来实现窗体的互斥运行。。但是会出现失效混乱的情况,令我苦恼不已。

    Mutex的方法如下:

    using System.Threading;    bool Create;  

    Mutex m =new Mutex( false, "name", out Create );

    if( Create ) Application.Run(new FormName());

    我想出了这样一个办法:

    1.在主窗体MainFrm的定义静态的bool boolFrmName变量,用于存储窗体的运行状态

    2.在需要启动的窗体FormName中也要创建静态Form变量,

    public static Form thisForm = new Form();

    并在该窗体的Load事件中给thisForm变量赋值 thisForm=this;

    2.在解决方案中添加一个类Judge,将类改成static类型,在类中添加如下方法:

    public static void RunForm(string FormName)

    {

    switch(FormName)

    case"RunFormName": MainFrm.boolFrmName=true; break;

    case"CloseFromName":MainFrm.boolFrmName=false;break;

    default: break;

    }

    3.在启动时先检测窗体是否被运行,如果窗体已经运行则激活该窗体

    if(boolFrm==false) FormName newForm = new FormName(); newForm.Show(); Judeg.RunForm("RunFormName");

    else FormName.thisForm.Activate();

     

    最新回复(0)