2014-10-11 3 views
-1

Я хотел бы создать форму диалога с файлом, которая работает как в MS Word. В частности, вы можете выбрать существующий файл, создать новый или удалить файл, все в диалоговом окне файла. OpenFileDialog - это соглашение только для чтения. Вы не можете создать новый файл с этим элементом управления. SaveFileDialog нельзя использовать для выбора существующего файла. Есть ли контроль, который будет делать все вышеперечисленное?Winforms Проблемы с OpenFileDialog

+0

OpenFileDialog - это запечатанный класс. Вы не можете продлить или изменить его. Поэтому создание собственного пользовательского OpenFileDialog является немного сложным. Вы можете начать здесь [Настройка OpenFileDialog] (http://www.codeproject.com/Articles/16276/Customizing-OpenFileDialog-in-NET) – Steve

+0

Спасибо, Стив. Надеюсь, это не так, очевидно. Я слышал, что Powershell Studio может делать все, что я задал. Проследить это сейчас. Цените свой ответ. –

ответ

0

Чтобы создать свой собственный диалог, вы должны выполнить следующие шаги:

  1. Создайте новую форму, называют его MyFolderDialog
  2. В новой форме добавить элементы управления вам нужно. Например, чтобы пользователь мог просматривать файловую систему, вы можете добавить treeView и заполнить его, используя классы System.IO.FileInfo и System.IO.FolderInfo.
  3. Создать свойство в вашей форме, которая отражает выбор пользователя, что-то вроде общественного струнной SelectedFolder
  4. Добавить кнопку «Подтвердить» и кнопку «Отмена» в форму
  5. В отмене щелчка кнопки обработчик событий добавьте code this.DialogResult = DialogResult.Cancel;
  6. В окне подтверждения нажмите кнопку «Обработчик событий», добавьте код this.DialogResult = DialogResult.Ok;
  7. Вызов пользовательского диалога как этот

    private string PickAFolder() 
    { 
        string selectedFolder = string.Empty; 
        using(var f = new MyFolderDialog()) 
        { 
         if(f.ShowDialog() == DialogResult.Ok) 
         { 
         selectedFolder = f.SelectedFolder; 
         } 
        } 
        return selectedFolder; 
    } 
    

Обратите внимание, что, когда форма показана с помощью метода ShowDialog, форма не будет распоряжаться, когда он будет закрыт, так что вы можете прочитать его свойство после того как вы подтвердили. Таким образом, хорошая практика удаляет его вручную, когда вам это больше не нужно. Элегантный способ сделать это - использовать ключевое слово using.

Надеюсь, это поможет.

Смежные вопросы