如何在自定义控件的属性网格中获取OpenFileDialog?
-
05-07-2019 - |
题
我正在创建.net自定义控件,它应该能够加载多个文本文件。我有一个名为ListFiles的公共属性,其属性设置为:
[Browsable(true), Category("Configuration"), Description("List of Files to Load")]
public string ListFiles
{
get { return m_oList; }
set { m_oList = value; }
}
根据对象的类型(string,string [],List,...),属性网格将允许用户输入一些数据。我的目标是在Properties Grid中有一个过滤的openfiledialog我的组件,它将使用户能够选择多个文件并将其作为数组或字符串(或其他东西......)返回。
Sooo ...这是我的问题:如何在自定义控件的属性网格中获取OpenFileDialog?
非常感谢!
解决方案
您可以通过添加 UITypeEditor 来实现此目的。
这是一个UITypeEditor的示例,它为您提供了用于选择文件名的OpenFileDialog。
其他提示
您可以使用内置的UITypeEditor。它被称为 FileNameEditor
[EditorAttribute(typeof(System.Windows.Forms.Design.FileNameEditor), typeof(System.Drawing.Design.UITypeEditor))]
public string SomeFilePath
{
get;
set;
}
这是自定义文件对话框的另一个例子:
<强> CustomFileEditor.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; }
不隶属于 StackOverflow