C#:右键单击时获取文件夹名称

时间:2011-05-11 13:15:26

标签: c# contextmenu directory

我正在开发一个Windows应用程序,我需要获取文件夹名称,同时右键单击文件夹以对其执行某些操作。

到目前为止,我做了以下事情:

  1. 在HKKEY_CLASS_ROOT \ Folder \ shell \(我的程序名称)中制作了一个注册表子项
  2. 制作了我的程序名称\ command [我程序的路径]
  3. 的注册表子项

    现在我将注册表项显示在文件夹上下文菜单中。在我的申请中,我做了以下事情:

    1- in program.cs

        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Form1 p = new Form1();
            if (args.Length > 0)
            {
                p.pathkey = args[0];
            }
            Application.Run(p);
        }
    

    2- in my form1:

        private string _pathkey;
        public string pathkey
        {
            get { return _pathkey; }
            set { _pathkey = value; }
        }
    
        private void Form1_Load(object sender, EventArgs e)
        { 
            if (this.pathkey != null)
            {
               textBox1.Text=pathkey;
            }
        }
    

    最后:

    现在,当我右键单击一个文件夹时,可以说例如名为NEW。然后textbox3.text = C:\ NEW,到目前为止它工作正常,但如果文件夹名称是新文件夹然后textbox3.text = C:\新的只有C:\新文件夹,如果args.length>这是我的问题; 0它只显示长度0而不是完整路径。

1 个答案:

答案 0 :(得分:1)

您需要将%0放在注册表中以强制将整个路径视为单个参数。
否则,空格将被视为参数分隔符。

您也可以调用String.Join(" ", args)手动重新组合所有参数,但第一种方法更好。