c# - 在 Windows 窗体应用程序中访问以自定义文件类型保存的数据

标签 c# winforms clickonce

我有一个设置了自定义文件扩展名的 Windows 窗体应用程序。我能够将数据保存到我的文件中,当我从 Windows 双击我保存的文件时,它会启动我的应用程序。

但是,我无法获得我单击以读取其数据的文件的名称。一切似乎都告诉我 args[0] 应该是 exe(如我所见),args[1] 将是下一个参数(可能是我正在寻找的;我点击的文件名)但是 args.Length总是只有1,无论我直接打开exe还是点击启动exe的文本文件,我都没有我点击的文件名。

Edit (resolved; ish):好的,终于确定了一个更具体的问题。我的应用程序是使用 ClickOnce 部署的,我通过 Windows 窗体应用程序属性设置了所有文件关联。当我右键单击并查看我保存的自定义文件的属性时,它显示“打开方式:ClickOnce 应用程序部署支持库”而不是我的应用程序名称。如果我将默认值更改为使用我的 .exe 打开,神奇的是它具有正确的 arg 值(exe,后跟我单击的文件名)。

最佳答案

您无法直接访问 ClickOnce 应用程序的命令行参数。为了找到它们,我使用了以下内容,对 here 进行了一些修改:

System.Runtime.Hosting.ActivationArguments args = AppDomain.CurrentDomain.SetupInformation.ActivationArguments;
if (args.ActivationData != null)
{
    foreach (string commandLineFile in AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData)
    {
        MessageBox.Show(string.Format("Command Line File: {0}", commandLineFile));
    }
}

这给了我点击的文件名。万岁。

关于c# - 在 Windows 窗体应用程序中访问以自定义文件类型保存的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23356286/

相关文章:

c# - 使用 memcpy 从 C++ 到 C#

javascript - 我的 JS 函数如何限制特定数据?

clickonce - 有人使用过 GoDaddy 的代码签名证书和 ClickOnce

.net - 如何从应用程序内启动 ClickOnce 应用程序的卸载?

.net - Clickonce:setup.exe 在浏览器中打开 .application 文件。普通的?

c# - Linq To Sql - 当另一个值更改时更新一个值

c# - 哪种 SQL Server 字段类型最适合存储价格值?

vb.net - 我的应用程序不会终止

c# - 在没有外部 dll 的情况下制作图像底片的有效方法

c# - 通过窗体传递值 C#