将表单设置为像FolderBrowser一样的可重用控件

时间:2016-10-17 00:43:38

标签: c# winforms user-controls custom-controls

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

1 个答案:

答案 0 :(得分: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;
        }
    }
}