【问题标题】:How can I get my user control to listen to another control's event in winform?如何让我的用户控件在 winform 中监听另一个控件的事件?
【发布时间】:2013-12-03 07:52:10
【问题描述】:

我正在尝试在我的系统中进行收藏夹控制,所以 我有一个包含一些 ComboBox、TextBox 和按钮的表单,在我的代码中,我正在向 ComboBoxs、TextChange inTextBoxes 和 Click to 按钮添加一个像 SelectedValueChanged 事件这样的环境。

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

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

有什么方法可以让我从收藏夹用户控件中收听这些事件?

【问题讨论】:

    标签: c# winforms events


    【解决方案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();
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多