簡體   English   中英

如何創建自定義事件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM