Gad
Gad

Reputation: 42316

How can I get an OpenFileDialog in a custom control's property grid?

I'm creating a .net custom control and it should be able to load multiple text files. I have a public property named ListFiles with those properties set :


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

Depending upon the type of object, (string, string[], List, ...), the property grid will allow the user to enter some data.. My goal would be to have a filtered openfiledialog in the Properties Grid of my component that would enable the user to choose multiple files and return it as an array or string (or something else...).

Sooo... Here's my question : How can I get an OpenFileDialog in a custom control's property grid?

Thanks a lot!

Upvotes: 12

Views: 11896

Answers (3)

user11043757
user11043757

Reputation:

Here's another example comes with customizing File Dialog :

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"; ;
        }
    }

}

Usage :

            [Category("Settings"), DisplayName("Project File:")]
            [EditorAttribute(typeof(CustomFileBrowser), typeof(System.Drawing.Design.UITypeEditor))]
            public string Project_File { get; set; }

Upvotes: 2

Cory
Cory

Reputation: 1339

You can do this by adding a UITypeEditor.

Here is an example of a UITypeEditor that gives you the OpenFileDialog for chossing a filename.

Upvotes: 11

SerGiant
SerGiant

Reputation: 171

You can use built-in UITypeEditor. It is called FileNameEditor

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

public string SomeFilePath
{
 get;
 set;
}

Upvotes: 17

Related Questions