Я создал форму, которая эмулирует FolderBrowseDialog
, но с некоторыми дополнительными функциями, которые я хотел. Он протестирован и работает, поэтому теперь я хочу, чтобы он стал контролировать. Моя проблема в том, что как только я наследую от UserControl
вместо Form
, у меня больше нет метода Close()
, и у меня больше нет события FormClosing
. Когда я нажимаю кнопку «ОК» или «Отмена», как закрыть форму и вернуть управление вызывающему объекту?Создание формы как многоразового элемента управления, такого как FolderBrowser
0
A
ответ
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;
}
}
}
Спасибо. Это работает. – Orcbighter
Спасибо, что работает. Однако я нашел альтернативное решение. Я создал библиотеку классов, а затем заменил токен class.cs, который был создан с классами моей формы, а затем просто изменил пространство имен. Это работает, но мне нравится ваше решение лучше. Это немного чище. – Orcbighter
Если вы не создаете компонент, вы не можете использовать его во время разработки, и вы должны использовать его только в коде. Но создание компонента позволяет вам отбросить его экземпляр в форме, например, в качестве компонента браузера реального каталога, таймера и т. Д. –