C#禁止程序重复打开

禁止程序被打开两次方法

方法一:亲测可用

在项目的第一个窗体的启动事件中 如form1_load() 中添加如下语句

        //判断是否重复打开
        public void check(object sender, EventArgs e)
        {
            System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName("WMS_RFID");//获取指定的进程名   
            if (myProcesses.Length > 1) //如果可以获取到知道的进程名则说明已经启动
            {
                MessageBox.Show("程序已启动!");
                Application.Exit();              //关闭系统
            }
        }

 

====================================================================================================================

方法二 :未测试

在项目的启动引导文件 Program.cs中加入判断语句

using System.Linq;
using System.Windows.Forms;

namespace XiaoZhiSoft
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            bool isRuned;
            System.Threading.Mutex mutex = new System.Threading.Mutex(true, "OnlyRunOneInstance", out isRuned);
            if (isRuned)
            {

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
                mutex.ReleaseMutex();
            }
            else
            {
                MessageBox.Show("程序已启动!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
    }
}

 

转载于:https://www.cnblogs.com/yuanlipu/p/7442611.html

C#中,你可以使用Windows Forms应用程序来创建主窗体并添加菜单项。下面是一个简单的步骤和代码示例,展示了如何实现这个功能: 1. 首先,在Windows Form设计器中,右键单击Form1控件,选择"MenuStrip"然后拖拽到窗体上。这将添加一个MenuStrip。 2. 点击MenuStrip,添加新的ToolStripMenuItem,代表你的菜单项。例如,可以创建"文件"、"编辑"、"查看"等菜单,每个菜单下有对应的子菜单项。 ```csharp ToolStripMenuItem fileMenu = new ToolStripMenuItem("文件"); ToolStripMenuItem openToolStripMenuItem = new ToolStripMenuItem("打开", null); openToolStripMenuItem.Click += OpenSubForm; fileMenu.DropDownItems.Add(openToolStripMenuItem); MenuStrip mainMenu = this.menuStrip1; mainMenu.Items.Add(fileMenu); ``` 3. `OpenSubForm`事件处理程序会在用户点击"打开"菜单项时触发。这里我们创建了一个名为OpenSubForm的方法,它会根据需要打开特定的子窗体。为了防止重复打开,你可以使用`FormClosing`事件检查当前是否已有该子窗体存在。 ```csharp private void OpenSubForm(object sender, EventArgs e) { if (!IsSubFormOpen(typeof(SubForm1))) // 假设SubForm1是你想要打开的子窗体 { SubForm1 subForm = new SubForm1(); subForm.Show(); subForm.FormClosed += (sender2, args2) => RemoveFromOpenForms(subForm); // 当关闭子窗体时移除标记 } else { MessageBox.Show("子窗体已经打开,请关闭当前窗口再尝试打开。"); } } private bool IsSubFormOpen(Type formType) { foreach (Form form in Application.OpenForms) { if (form.GetType() == formType) return true; } return false; } private void RemoveFromOpenForms(Form form) { // 这里可以移除从某数据结构或列表中对当前子窗体的引用,以便下次检查时不再显示“已打开”提示 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值