1 static class Program 2 { 3 /// <summary> 4 /// アプリケーションのメイン エントリ ポイントです。 5 /// </summary> 6 [STAThread] 7 static void Main() 8 { 9 Process instance = RunningInstance(); 10 if (instance == null) 11 { 12 //启用可视样式 13 Application.EnableVisualStyles(); 14 //在应用程序范围内设置控件显示文本的默认方式(可以设为使用新的GDI+ , 还是旧的GDI) 15 //true使用GDI+方式显示文本, 16 //false使用GDI方式显示文本. 17 Application.SetCompatibleTextRenderingDefault(false); 18 //在当前线程上开始运行标准应用程序消息循环,并使指定窗体可见 19 Application.Run(new _1_02_Menu()); 20 } 21 else 22 { 23 // 二重起動はできません。 24 string strMessage = Msg.GetMessageInfo("---", ""); 25 MessageBox.Show(strMessage, "---", MessageBoxButtons.OK, MessageBoxIcon.Error); 26 27 } 28 } 29 30 #region----Processで、同じメニューは2重起動はできません。--- 31 /// <summary> 32 /// 同じメニューを検証する 33 /// </summary> 34 public static Process RunningInstance() 35 { 36 Process current = Process.GetCurrentProcess(); 37 Process[] processes = Process.GetProcessesByName(current.ProcessName); 38 foreach (Process process in processes) 39 { 40 if (process.Id != current.Id) 41 { 42 if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName) 43 { 44 return process; 45 } 46 } 47 } 48 return null; 49 } 50 #endregion 51 }
Form.ShowDialog()弹出模式化的窗体,只有当前窗体关闭,其他窗体才可使用
Form.Show()弹出非模式化的窗体,弹出后就关闭
Application.run() 在调用线程上开辟一个消息循环,并且保持窗体一直存在,直到退出程序
补充知识:Application.StarupPath获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
来源:https://www.cnblogs.com/-jwj/p/10716927.html