使窗体成为可重用控件,如FolderBrowser

本文关键字:控件 FolderBrowser 窗体 | 更新日期: 2023-09-27 18:13:15

我已经创建了一个模拟FolderBrowseDialog的表单,但是添加了一些我想要的功能。它已经测试过了,可以工作了,所以现在我想把它变成一个控件。我的问题是,一旦我从UserControl而不是Form继承,我不再有Close()方法,我不再有FormClosing事件。当我单击OK或Cancel按钮时,如何关闭窗体并将控制权返回给调用对象?

使窗体成为可重用控件,如FolderBrowser

为了使它成为一个可重用的组件,而不是试图从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;
        }
    }
}