Comment obtenir un OpenFileDialog dans la grille de propriétés d'un contrôle personnalisé?

StackOverflow https://stackoverflow.com/questions/170791

Question

Je crée un contrôle personnalisé .net qui devrait pouvoir charger plusieurs fichiers texte. J'ai une propriété publique nommée ListFiles avec ces propriétés définies:


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

En fonction du type d'objet (chaîne, chaîne [], Liste, ...), la grille de propriétés permettra à l'utilisateur de saisir des données. Mon objectif serait d'avoir un openfiledialog filtré dans la grille de propriétés. de mon composant qui permettrait à l'utilisateur de choisir plusieurs fichiers et de le retourner sous forme de tableau ou de chaîne (ou autre chose ...).

Sooo ... Voici ma question: Comment obtenir un OpenFileDialog dans la grille de propriétés d'un contrôle personnalisé?

Merci beaucoup!

Était-ce utile?

La solution

Vous pouvez le faire en ajoutant un UITypeEditor .

Voici un exemple d'un UITypeEditor qui vous donne le OpenFileDialog pour chosser un nom de fichier.

Autres conseils

Vous pouvez utiliser UITypeEditor intégré. Il s’appelle FileNameEditor

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

public string SomeFilePath
{
 get;
 set;
}

Voici un autre exemple fourni avec la personnalisation du dialogue de fichier:

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

}

Utilisation:

            [Category("Settings"), DisplayName("Project File:")]
            [EditorAttribute(typeof(CustomFileBrowser), typeof(System.Drawing.Design.UITypeEditor))]
            public string Project_File { get; set; }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top