使窗体成为可重用控件,如FolderBrowser
本文关键字:控件 FolderBrowser 窗体 | 更新日期: 2023-09-27 18:13:15
我已经创建了一个模拟FolderBrowseDialog
的表单,但是添加了一些我想要的功能。它已经测试过了,可以工作了,所以现在我想把它变成一个控件。我的问题是,一旦我从UserControl
而不是Form
继承,我不再有Close()
方法,我不再有FormClosing
事件。当我单击OK或Cancel按钮时,如何关闭窗体并将控制权返回给调用对象?
为了使它成为一个可重用的组件,而不是试图从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;
}
}
}