Como posso obter um OpenFiledialog na grade de propriedade de um controle personalizado?

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

Pergunta

Estou criando um controle personalizado .NET e ele deve ser capaz de carregar vários arquivos de texto. Eu tenho uma propriedade pública chamada ListFiles com o conjunto de propriedades:


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

Dependendo do tipo de objeto, (String, String [], List, ...), a grade da propriedade permitirá que o usuário insira alguns dados. Meu objetivo seria ter um OpenFiledialog filtrado na grade de propriedades do meu componente Isso permitiria ao usuário escolher vários arquivos e retornar como uma matriz ou string (ou outra coisa ...).

Sooo ... aqui está minha pergunta: Como posso obter um OpenFiledialog na grade de propriedade de um controle personalizado?

Muito obrigado!

Foi útil?

Solução

Você pode fazer isso adicionando um UityPeeditor.

Aqui está um exemplo de um uityPeeditor que oferece o OpenFiledialog para pisar um nome de arquivo.

Outras dicas

Você pode usar o UityPeeditor interno. É chamado Filenameeditor

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

public string SomeFilePath
{
 get;
 set;
}

Aqui está outro exemplo vem com a caixa de diálogo Personalizando o arquivo:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top