Come posso ottenere un OpenFileDialog nella griglia delle proprietà di un controllo personalizzato?
-
05-07-2019 - |
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!
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; }