¿Cómo puedo obtener un OpenFileDialog en la cuadrícula de propiedades de un control personalizado?

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

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!

¿Fue útil?

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; }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top