在文件中使用“打开... ”时,如何使用不同的表单正确启动C#应用程序。
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (args.Length == 1)
{
if (System.IO.File.Exists(args[0]))
Application.Run(new DetailsForm(args[0]));
}
else Application.Run(new MainForm());
}
当您在 MyApplication.exe (仅限DetailsForm启动)上拖放文件时,上述代码效果正常,但在使用文件&gt时不起作用;打开> MyApplication.exe 即可。出于某种原因,它会加载MainForm
,就像忽略Main()
一样。
使用“打开方式”时,参数如何传递?
修改
使用Windows文件上下文菜单中的“打开方式”选项时,登录main()不返回任何参数。但是,“else”块也未执行。什么启动MainForm呢?
在文件中使用“open with”(即用我的程序打开JPG)时,下面代码中的MessageBox不会打开。就好像它忽略了整个if-else子句并从其他地方启动MainForm。
else
{
MessageBox.Show("No parameters");
Application.Run(new MainForm());
}
编辑/解决方案
发生了与Windows相关的问题。将问题留在这里以防万一有人碰巧遇到同样的问题。
答案 0 :(得分:1)
试试吼叫, 我前一段时间遇到过同样的问题。
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new YourApplication.Main(args));
}
答案 1 :(得分:0)
尝试使用以下if语句:
if (args.Length >= 1)
{
if (System.IO.File.Exists(args[0]))
Application.Run(new DetailsForm(args[0]));
}
else
{
Application.Run(new MainForm());
}
我能够通过复制文件和使用open来测试这个。
答案 2 :(得分:0)
找到解决方案。这与Windows有关... 我在2个目录(旧的和新的)中有相同的应用程序。显然,即使使用"浏览"到新的位置,然后"打开"对话框从旧路径启动应用程序。