【问题标题】:C# : getting folder name when right click on itC#:右键单击它时获取文件夹名称
【发布时间】:2011-05-11 13:15:25
【问题描述】:

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

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

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

现在我让注册表项显示在文件夹上下文菜单中。在我的应用程序中,我执行了以下操作:

1- 在 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- 以我的形式 1:

    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 ,到目前为止它工作正常但是如果文件夹名称是 New Folder 然后 textbox3.text = C:\New 不是 C:\New Folder 如果 args.length > 0 这就是我的问题它只显示长度 0 而不是完整路径。

【问题讨论】:

标签: c# contextmenu directory


【解决方案1】:

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

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

【讨论】:

  • 哇,真的很管用,非常非常非常非常感谢我真的做了很大的搜索,再次感谢,顺便说一下,我把 %1 放在双引号中,而不是 %0 和它也工作了。非常感谢
猜你喜欢
  • 2021-12-30
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
相关资源
最近更新 更多