簡而言之,UserControl實際上只是一個自定義控件,就像在WinFrom上放置一個TextBox
或ListBox
一樣,您將UserControl放在窗體上。
像對待任何其他控件一樣對待您的UserControl,如TextBox
或ListBox
。
所以,就像你從一個TextBox
通過TextBox.Text
或SelectedValue
或SelectedItem
從ListBox
的價值,你會叫您的用戶控件的方法返回的SelectedItem。
通常,單擊確定按鈕或窗體關閉時,在代碼中時,您會通過窗體的每個控件獲取其值。據推測,你會做一些驗證,以確保輸入正確的值。
因此,當您的表單被接受時,您將調用您的UserControl的方法來獲取所選項目。您不必訂閱活動即可等待發生。再次,就像對待正常的ListBox
一樣對待它。
編輯:
知道現在更多關於您的問題,這個性質就是我的回答:
假設你有一個用戶控件,看起來像這樣:
在你後面的代碼將不得不設置一個事件來監視何時在UserControl中單擊了OK按鈕。此事件也將通知用戶什麼樣的選擇是,在你的列表中選擇用戶:
public partial class SelectFromListUserControl : UserControl
{
public class SelectedItemEventArgs : EventArgs
{
public string SelectedChoice { get; set; }
}
public event EventHandler<SelectedItemEventArgs> ItemHasBeenSelected;
public SelectFromListUserControl()
{
InitializeComponent();
}
private void btnOK_Click(object sender, EventArgs e)
{
var handler = ItemHasBeenSelected;
if (handler != null)
{
handler(this, new SelectedItemEventArgs
{ SelectedChoice = listBox1.SelectedItem.ToString() });
}
}
}
在主窗體,你將有代碼圖案類似於以下。
- 應該有一個例程來創建或使這個特殊的用戶控件可見。
- 它將鉤住用戶控件中的事件,以便通知主窗體。
- 它會繪製用戶控件。
事件處理程序將檢索用戶控件中選定的值,然後清除用戶控件和/或調出其他用戶控件。
private void ShowSelectFromListWidget()
{
var uc = new SelectFromListUserControl();
uc.ItemHasBeenSelected += uc_ItemHasBeenSelected;
MakeUserControlPrimaryWindow(uc);
}
void uc_ItemHasBeenSelected(object sender,
SelectFromListUserControl.SelectedItemEventArgs e)
{
var value = e.SelectedChoice;
ClosePrimaryUserControl();
}
private void MakeUserControlPrimaryWindow(UserControl uc)
{
// my example just puts in in a panel, but for you
// put your special code here to handle your user control management
panel1.Controls.Add(uc);
}
private void ClosePrimaryUserControl()
{
// put your special code here to handle your user control management
panel1.Controls.Clear();
}
嗯,你的設計到底如何?例如。像@ pm_2這樣的表單彈出窗口會出現什麼問題?顯示用戶控件時應該禁用哪些內容? –
我假設你要 阻止UI風格,看起來很棒。在網上你可以找到jscript的例子。但我們曾經爲我們的前端窗口做過 – qwr
這是一款類似於手機的設計。該應用程序有多個頁面(構建爲UserControls)。其中一個頁面可用作選擇某些值的小部件。用戶點擊一個按鈕以確認選擇。在UserControl中選擇該值後,父表單中的代碼應該處理它。所以基本上這個表單加載一個臨時的UserControl來允許用戶選擇一個值。 – SharpAffair