12

我正在创建一个 .net 自定义控件,它应该能够加载多个文本文件。我有一个名为 ListFiles 的公共属性,其中设置了这些属性:


[Browsable(true), Category("Configuration"), Description("List of Files to Load")]
public string ListFiles
  {
     get { return m_oList; }
     set { m_oList = value; }
  }

根据对象的类型(字符串,字符串 [],列表,...),属性网格将允许用户输入一些数据。我的目标是在我的组件的属性网格中有一个过滤的 openfiledialog这将使用户能够选择多个文件并将其作为数组或字符串(或其他东西......)返回。

Sooo ...这是我的问题:如何在自定义控件的属性网格中获取 OpenFileDialog?

非常感谢!

4

3 回答 3

16

您可以使用内置的 UITypeEditor。它被称为FileNameEditor

[EditorAttribute(typeof(System.Windows.Forms.Design.FileNameEditor), typeof(System.Drawing.Design.UITypeEditor))]

public string SomeFilePath
{
 get;
 set;
}
于 2010-03-03T17:13:26.103 回答
11

您可以通过添加UITypeEditor来做到这一点。

这是一个 UITypeEditor 的示例,它为您提供了用于选择文件名的 OpenFileDialog。

于 2008-10-04T18:32:39.487 回答
2

这是自定义文件对话框的另一个示例:

自定义文件编辑器.cs

using System.Windows.Forms;
using System.Windows.Forms.Design;

namespace YourNameSpace
{
    class CustomFileBrowser : FileNameEditor
    {
        protected override void InitializeDialog(OpenFileDialog openFileDialog)
        {
            base.InitializeDialog(openFileDialog);
            openFileDialog.Title = "Select Project File : ";
            openFileDialog.Filter = "Project File (*.proj)|*.proj"; ;
        }
    }

}

用法 :

            [Category("Settings"), DisplayName("Project File:")]
            [EditorAttribute(typeof(CustomFileBrowser), typeof(System.Drawing.Design.UITypeEditor))]
            public string Project_File { get; set; }
于 2019-05-09T16:55:49.627 回答