0
我創建了一個模擬FolderBrowseDialog
的表單,但添加了一些我想要的功能。它經過測試和工作,所以現在我想把它變成一個控件。 我的問題是,只要我繼承UserControl
而不是Form
,我不再有Close()
方法,並且我不再有FormClosing
事件。 當我點擊確定或取消按鈕時,如何關閉窗體並將控件返回給調用對象?使窗體成爲可重複使用的控件,如FolderBrowser
我創建了一個模擬FolderBrowseDialog
的表單,但添加了一些我想要的功能。它經過測試和工作,所以現在我想把它變成一個控件。 我的問題是,只要我繼承UserControl
而不是Form
,我不再有Close()
方法,並且我不再有FormClosing
事件。 當我點擊確定或取消按鈕時,如何關閉窗體並將控件返回給調用對象?使窗體成爲可重複使用的控件,如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;
}
}
}
謝謝。這樣可行。 – Orcbighter
謝謝,這是有效的。 但是,我確實找到了一個備用解決方案。我創建了一個類庫,然後用創建了 的標記class.cs替換爲我的表單的類,然後只更改了名稱空間。 它的工作原理,但我更喜歡你的解決方案。這是一個小清潔劑。 – Orcbighter
如果您不製作組件,則不能在設計時使用它,只能在代碼中使用它。但是製作一個組件可以讓你將它的一個實例放在你的表單上,就像一個真正的文件夾瀏覽器組件,一個計時器等一樣。 –