如何让我的用户控件在winform中监听另一个控件的事件?

时间:2013-12-03 07:52:11

标签: c# winforms events

我正试图在我的系统中进行收藏控制 我有一个包含一些ComboBoxs,TextBoxes和按钮的表单,在我的代码中,我在ComboBoxs,TextChange inTextBoxes和Click to buttons中添加了一个像SelectedValueChanged事件这样的envet。

在每个控件旁边,我有一个面板控件,我在其中添加了一个我创建的用户控件实例(ToolStripButton)来显示收藏夹。

为了收集收藏夹的数据,我需要听取表单中控件的事件(例如,听一下ComboBox的SelectedValueChanged事件并将此值保存到收藏夹中)。

有没有办法可以从收藏夹用户控件中监听这些事件?

1 个答案:

答案 0 :(得分:1)

为了收听某些事件,您应该订阅该事件。您可以在收藏夹用户控件中订阅活动(您需要传递将事件引发到用户控件的控件):

// code for you FavoritesUserControl
public void Subscribe(ListBox listBox)
{
    listBox.SelectedValueChanged += ListBoxSelectedValueChanged;
}

private void ListBoxSelectedValueChanged(object sender, EventArgs e)
{
    // do what you want
}    

用法:

favorites1.Subscribe(listbox1);

或者您可以在表单上订阅活动,并在事件处理程序中通知用户控件:

// code for your Form
private void ListBoxSelectedValueChanged(object sender, EventArgs e)
{
    favorites1.DoSomething();
}