在文件中使用“Open with ...”时,C#Init不同的启动表单

时间:2014-05-21 16:26:17

标签: c# .net winforms parameter-passing

在文件中使用“打开... ”时,如何使用不同的表单正确启动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相关的问题。将问题留在这里以防万一有人碰巧遇到同样的问题。

3 个答案:

答案 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个目录(旧的和新的)中有相同的应用程序。显然,即使使用"浏览"到新的位置,然后"打开"对话框从旧路径启动应用程序。