¿Cómo puedo obtener un OpenFileDialog en la cuadrícula de propiedades de un control personalizado?
-
05-07-2019 - |
Pregunta
Estoy creando un control personalizado .net y debería poder cargar varios archivos de texto. Tengo una propiedad pública llamada ListFiles con esas propiedades establecidas:
[Browsable(true), Category("Configuration"), Description("List of Files to Load")]
public string ListFiles
{
get { return m_oList; }
set { m_oList = value; }
}
Dependiendo del tipo de objeto, (cadena, cadena [], Lista, ...), la cuadrícula de propiedades permitirá al usuario ingresar algunos datos. Mi objetivo sería tener un registro de archivo abierto filtrado en la cuadrícula de propiedades de mi componente que permitiría al usuario elegir varios archivos y devolverlos como una matriz o cadena (o algo más ...).
Sooo ... Aquí está mi pregunta: ¿Cómo puedo obtener un OpenFileDialog en la cuadrícula de propiedades de un control personalizado?
¡Muchas gracias!
Solución
Puede hacer esto agregando un UITypeEditor .
Aquí hay un ejemplo de un UITypeEditor que te da el OpenFileDialog para elegir un nombre de archivo.
Otros consejos
Puede usar UITypeEditor incorporado. Se llama FileNameEditor
[EditorAttribute(typeof(System.Windows.Forms.Design.FileNameEditor), typeof(System.Drawing.Design.UITypeEditor))]
public string SomeFilePath
{
get;
set;
}
Aquí hay otro ejemplo que viene con la personalización del diálogo de archivos:
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"; ;
}
}
}
Uso:
[Category("Settings"), DisplayName("Project File:")]
[EditorAttribute(typeof(CustomFileBrowser), typeof(System.Drawing.Design.UITypeEditor))]
public string Project_File { get; set; }