Как я могу получить OpenFileDialog в сетке свойств пользовательского элемента управления?

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

Вопрос

Я создаю пользовательский элемент управления .net, и он должен иметь возможность загружать несколько текстовых файлов.У меня есть общедоступное свойство с именем ListFiles со следующими установленными свойствами:


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

В зависимости от типа объекта (строка, строка[], Список,...) сетка свойств позволяет пользователю вводить некоторые данные.Моей целью было бы иметь отфильтрованное диалоговое окно openfiledialog в сетке свойств моего компонента, которое позволило бы пользователю выбирать несколько файлов и возвращать их в виде массива или строки (или чего-то еще...).

Оооо...Вот мой вопрос: Как я могу получить OpenFileDialog в сетке свойств пользовательского элемента управления?

Большое спасибо!

Это было полезно?

Решение

Вы можете сделать это, добавив UITypeEditor .

Вот пример UITypeEditor, который дает вам OpenFileDialog для выбора имени файла.

Другие советы

Вы можете использовать встроенный UITypeEditor. Он называется FileNameEditor

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

public string SomeFilePath
{
 get;
 set;
}

Вот еще один пример настройки диалогового окна файла:

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

}

Использование :

            [Category("Settings"), DisplayName("Project File:")]
            [EditorAttribute(typeof(CustomFileBrowser), typeof(System.Drawing.Design.UITypeEditor))]
            public string Project_File { get; set; }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top