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