单击时如何获取用户控件的数据

时间:2019-07-14 08:38:30

标签: c# winforms

我有一个新应用程序,例如cafe的manager,并为我的应用程序创建了一个用户控件。我的用户控件的名称是TableButton。它包括图片框和标签,并具有三个属性(ID,名称,状态)。

当我将其添加到表单中(带有循环)并单击它时,它会发送到不需要的事件数据(对象发送者是“图片框”或标签,具体取决于我是否单击“图片框”或标签。无法获取数据(ID,名称,状态)。 我想当我单击TableButton中的任意位置时,对象发送者是TableButton,并且可以从中获取数据。

那么这有什么解决方案? 我的英语不好,所以也许我的文章是错误的并且难以理解。希望您能避免这种不便之处。非常感谢。

1 个答案:

答案 0 :(得分:0)

  

当我单击表格按钮中的任意位置时,我想要的是对象发送者   tablebutton,我可以从中获取数据。

如果您为子控件的Click事件订阅处理程序,并在该处理程序中触发用户控件的Click,则将获得所需的影响。您可以做到:

public partial class TableButton : UserControl
{
    class TableButtonControlCollection : ControlCollection
    {
        TableButton owner;

        public TableButtonControlCollection(TableButton owner) : base(owner)
        {
            this.owner = owner;
        }

        public override void Add(Control value)
        {
            base.Add(value);
            value.Click += Value_Click;
        }

        private void Value_Click(object sender, EventArgs e)
        {
            owner.OnClick(EventArgs.Empty);
        }
    }

    protected override ControlCollection CreateControlsInstance()
    {
        return new TableButtonControlCollection(this);
    }
}

将此代码段添加到您的TableButton类中