0


我在 Visual Studio 2010 中以设计器模式制作了一个 TableLayoutPanel(例如 8x8 rowsxcolumns),然后我在这个“矩阵”的每个字段中都放置了一个按钮。有什么办法可以集中处理事件吗?我发现 TableLayoutPanel 有 TabIndexChanged,但我不知道这是否对我有用。
我只是想知道这是否可能:
我单击第二个按钮并获取有关我单击的按钮的信息,并且能够更改他的某些属性-例如图标或文本。
让我们想象一个想法,我将 tablelayoutpanel 理解为“矩阵”或“数组”,我想使用它是这样的:

1)I'll click on button on possition i (or i,j)
2)I'll change the Icon of button on possition i (or i,j)

那可能吗?如果是,如何?
谢谢

4

2 回答 2

1

您可以让一个方法处理所有按钮单击事件,然后使用 sender 参数修改按钮上的图像。

例如

private void CreateButtons(object sender, EventArgs e)
    {
        for (int i = 0; 8 < length; i++)
        {

            for (int j = 0; 8 < length; i++)
            {
                var btn = new Button() { Text = "Something" };
                btn.Click += new EventHandler(btn_Click);
                this.tableLayoutPanel1.Controls.Add(btn, i, j);
            }
        }

    }

    void btn_Click(object sender, EventArgs e)
    {
         ((Button)sender).Image= SomeMethodThatReturnsAnImage();
    }

顺便TabIndexChanged说一句,这对您来说完全没用,因为它仅在控件的 TabIndex 属性发生更改时才会引发,这通常非常罕见。您会记得 TabIndex 属性用于控制用户 Tab按键时的控件顺序。

于 2012-04-22T01:27:22.120 回答
0

听起来您只需要将所有按钮的单击事件与单个事件处理程序相关联,然后在事件处理程序内操作单击的按钮等

于 2012-04-21T22:17:04.233 回答