检测单击表单上的哪个Usercontrol

时间:2016-04-06 21:41:10

标签: c# user-controls

我的情况如何? 我正在使用C#。我有一个包含单个usercontrol的多个实例的表单。 usercontrol有三个按钮。添加,关闭和选择。

我想要实现的目标是什么? 我希望在单击其关闭按钮时获取用户控件实例的标记。

任何帮助将不胜感激,

由于

2 个答案:

答案 0 :(得分:0)

在Usercontrol中,向该按钮添加一个事件处理程序。在Eventhandler中触发一个事件,在表单中添加一个事件处理程序

编辑:这样的事情 Edit2:改变它以满足海报要求

public delegate void UControlButtonCloseClickedHandler(UControl sender, EventArgs e);
public partial class UControl : UserControl
{
    public event UControlButtonCloseClickedHandler UControlButtonCloseClicked;

    public UControl()
    {
        InitializeComponent();

        btnAdd.Click += ButtonAdd_Click;
        btnSelect.Click += ButtonSelect_Click;
        btnClose.Click += ButtonClose_Click;
    }


    private void ButtonClose_Click(object sender, EventArgs e)
    {
        UControlButtonCloseClicked(this, new EventArgs());
    }
}

然后在您的表单中添加一个像uControl.UControlButtonCloseClicked += Hanlder;

这样的处理程序

答案 1 :(得分:-1)

为什么不将每个按钮链接到同一个事件,然后获取控件的名称以确定它是否为关闭按钮(因为每个控件必须具有唯一的名称,除非您动态地向窗体添加控件但是甚至那时你应该指定一个名字)。编辑:通过获取名称我实际上意味着比较触发事件的控件是否与您要执行关闭操作,打开操作等相同:)

        public Form1()
    {
        InitializeComponent();
        btnCloseButton.Click += new EventHandler(OnUserControlClick);
        btnOtherRandomButton.Click += new EventHandler(OnUserControlClick);
        btnOtherRandomButton1.Click += new EventHandler(OnUserControlClick);
    }

    private static void OnUserControlClick(object sender, EventArgs e)
    {
        if (sender as UserControl == btnCloseButton)
        {
            this.Close();
        }
    }