2014-09-19 54 views
0

所以我的winform与自定义文件格式(.abc)相关联。如何获得它,以便如果单击text.abc,则winform运行并获取text.abc的内容。如何添加打开并阅读与我的WinForm相关的文本文件?

它只是作为参数传入吗?

+0

如果我理解正确的话,你需要在这里两件事情:1,关联与名为.abc的程序文件,在Windows和2知道如何在程序启动后检索文件名。我对吗?还是仅仅是第二点? – 2014-09-19 17:54:02

+0

这是更多的第二部分。一旦文件被点击并且它的相关程序启动,该程序如何获取文件的信息?抱歉,模棱两可。 – MK3GTX 2014-09-19 17:55:47

回答

1

首先,你需要注册您的自定义文件扩展名,看看这篇文章:

Associate File Extension with Application

然后你的窗户里面应用程式可以读取命令参数如下:

private void Form1_Load(object sender, EventArgs e) 
    { 
     foreach (var item in Environment.GetCommandLineArgs()) 
     { 
      Debug.WriteLine(item); 
     } 
    } 
+0

谢谢!这正是我需要知道的。 – MK3GTX 2014-09-19 18:05:49

1

如果你已经为特定的扩展程序正确地注册了你的应用程序,那么如果用户双击带有该扩展名的文件,SO就会调用你的应用程序并传递一个命令行参数,并且文件名被双击。 该框架还使用传递的命令行初始化Environment.CommandLine属性。 您可以在程序的任何地方检索此属性,也可以使用Environment.GetCommandLineArgs阵列。请记住,该数组的第一个元素等于程序的名称,参数从第二个元素开始。

你应该写带有参数的主入口像在控制台应用程序

static void Main(string[] args) 
{ 
    if(args.Length > 0) 
    { 
     // command line passed 
     string fileToProcess = args[0]; 
     if(Path.GetExtension(fileToProcess) == ".abc") 
     { 
      // Whatever 
     } 

    } 
} 
+0

完美!这正是我想知道的。谢谢你的回答,但是我将不得不给格雷戈尔“接受的答案”,因为他大约30秒击败了你。 – MK3GTX 2014-09-19 18:05:32