2016-10-17 9 views
0

Я создал форму, которая эмулирует FolderBrowseDialog, но с некоторыми дополнительными функциями, которые я хотел. Он протестирован и работает, поэтому теперь я хочу, чтобы он стал контролировать. Моя проблема в том, что как только я наследую от UserControl вместо Form, у меня больше нет метода Close(), и у меня больше нет события FormClosing. Когда я нажимаю кнопку «ОК» или «Отмена», как закрыть форму и вернуть управление вызывающему объекту?Создание формы как многоразового элемента управления, такого как FolderBrowser

ответ

0

Чтобы сделать его повторно используемым компонентом, вместо того чтобы пытаться извлечь его из Control, создайте Component, который использует эту форму. Таким образом, он может отображаться на панели инструментов, и вы можете отбросить экземпляр вашего компонента на поверхности дизайна, как и другие компоненты.

Ваш компонент должен содержать некоторые свойства, которые вы хотите открыть из диалогового окна, также содержит метод ShowDialog, который создал вашу форму, используя некоторые свойства (например, заголовок, начальную директорию) и показывает вашу пользовательскую форму в диалоговом окне и задает некоторые свойства (например, выбранная папка) и возвращает результат диалога. Например:

using System.ComponentModel; 
using System.Windows.Forms; 
public partial class MyFolderBrowser : Component 
{ 
    public string Text { get; set; } 
    public string SelectcedFolder { get; set; } 
    public DialogResult ShowDialog() 
    { 
     using (var f = new YourCustomForm() { Text = this.Text }) 
     { 
      var result = f.ShowDialog(); 
      if (result == DialogResult.OK) 
       SelectcedFolder = f.SelectedFolder; 
      return result; 
     } 
    } 
} 
+0

Спасибо. Это работает. – Orcbighter

+0

Спасибо, что работает. Однако я нашел альтернативное решение. Я создал библиотеку классов, а затем заменил токен class.cs, который был создан с классами моей формы, а затем просто изменил пространство имен. Это работает, но мне нравится ваше решение лучше. Это немного чище. – Orcbighter

+0

Если вы не создаете компонент, вы не можете использовать его во время разработки, и вы должны использовать его только в коде. Но создание компонента позволяет вам отбросить его экземпляр в форме, например, в качестве компонента браузера реального каталога, таймера и т. Д. –

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

  • Нет связанных вопросов^_^