[英]How can I create a custom event?
我有一個自定義的UserControls集:NavigationBar和NavigationItem。
我希望每當用戶單擊NavigationItem中的任何位置時,都會觸發一個事件。 我不知道該如何設置。
http://i.stack.imgur.com/ocP2D.jpg
我已經試過了:
public partial class NavigationBar : UserControl
{
public NavigationBar()
{
InitializeComponent();
SetupEvents();
}
public List<NavigationItem> NavigationItems { private get; set; }
public NavigationItem SelectedItem { get; set; }
private void SetupEvents()
{
navigationItem1.Click += new EventHandler(navigationItemClick);
}
void navigationItemClick(object sender, EventArgs e)
{
MessageBox.Show("Clicked on " + sender.ToString());
}
}
但是,只有在用戶專門單擊NavigationItem控件時才會觸發該事件,而在用戶單擊圖片或文本時則不會觸發。 (這些是PictureBox和Label)。
最好的行動方針是什么? 我想創建一些不錯的東西,而不是hacky代碼。 謝謝!
在您的班級中輸入以下內容:
public event EventHandler NavigationItemClick;
這將在您的名為NavigationItemClick
的類中創建一個新事件。 表單設計師甚至會看到它。
在方法navigationItemClick
您可以執行此操作以調用事件。
EventHandler handler = this.NavigationItemClick;
if (handler != null)
{
handler(this, EventArgs.Empty);
}
將事件保存到handler
變量中很重要,以避免出現競爭情況。 EventHandler
是一個委托,因此您可以像調用方法一樣調用它,因此if
語句中的行。 if
本身可確保有人已加入您的活動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.