【问题标题】:How to get data of user control when click点击时如何获取用户控件的数据
【发布时间】:2019-07-14 08:38:30
【问题描述】:

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

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

那么解决方案是什么? 我的英语不好,所以也许我的文章是错误的并且难以理解。我希望你能跳过这个不便。非常感谢。

【问题讨论】:

  • 制作您想要访问的所有控件internal (oe public) !默认情况下,它们都是private,因此您无法从外部访问它们。不过,不确定您所说的这些属性是什么意思..
  • 您应该能够访问我导航到发件人父容器的那些属性。

标签: c# winforms


【解决方案1】:

我希望当我单击表格按钮中的任何位置时,对象发送者是 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);
    }
}

将这个 sn-p 添加到你的 TableButton 类中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    相关资源
    最近更新 更多