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