C# 在使用"打开方式..."时初始化不同的启动窗体存档



当使用"Open with…"" on file.

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开始),但它不工作时使用 file> Open with>MyApplication.exe。由于某些原因,它加载MainForm,就像忽略Main()一样。

使用"Open With"时,参数是如何传递的?

编辑

在Windows文件上下文菜单中使用"Open With"选项时,登录main()不返回任何参数。然而,"else"块也不会被执行。那么是什么启动了MainForm呢?

下面代码中的MessageBox在文件上使用"open with"(即用我的程序打开JPG)时不会打开。这就好像它忽略了整个if-else子句,并从其他地方开始MainForm。

else 
{
    MessageBox.Show("No parameters"); 
    Application.Run(new MainForm());
}

EDIT/Solution

碰巧是windows相关的问题。把问题留在这里,以防有人碰巧有同样的问题。

试一试,我以前也遇到过同样的问题。

[STAThread] static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new YourApplication.Main(args)); }

尝试使用下面的if语句:

if (args.Length >= 1)
{
    if (System.IO.File.Exists(args[0]))
        Application.Run(new DetailsForm(args[0]));
}
else 
{
    Application.Run(new MainForm());
}

我可以通过复制文件以及使用open with.

进行测试。

找到解决方案。这与windows有关……我在两个目录(旧的和新的)中有相同的应用程序。显然,即使使用"浏览"到新位置,"打开"对话框也会从旧路径启动应用程序。

最新更新