Come posso ottenere un OpenFileDialog nella griglia delle proprietà di un controllo personalizzato?

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

Domanda

Sto creando un controllo personalizzato .net e dovrebbe essere in grado di caricare più file di testo. Ho una proprietà pubblica denominata ListFiles con quelle proprietà impostate:


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

A seconda del tipo di oggetto, (stringa, stringa [], Elenco, ...), la griglia delle proprietà consentirà all'utente di inserire alcuni dati. Il mio obiettivo sarebbe quello di avere un filtro aperto filtrato nella griglia delle proprietà del mio componente che consentirebbe all'utente di scegliere più file e restituirlo come un array o una stringa (o qualcos'altro ...).

Sooo ... Ecco la mia domanda: Come posso ottenere un OpenFileDialog nella griglia delle proprietà di un controllo personalizzato?

Grazie mille!

È stato utile?

Soluzione

Puoi farlo aggiungendo un UITypeEditor .

Ecco un esempio di un UITypeEditor che ti dà OpenFileDialog per lanciare un nome file.

Altri suggerimenti

Puoi usare UITypeEditor integrato. Si chiama FileNameEditor

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

public string SomeFilePath
{
 get;
 set;
}

Ecco un altro esempio con la personalizzazione della finestra di dialogo File:

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

}

Utilizzo:

            [Category("Settings"), DisplayName("Project File:")]
            [EditorAttribute(typeof(CustomFileBrowser), typeof(System.Drawing.Design.UITypeEditor))]
            public string Project_File { get; set; }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top