I've made in Visual Studio 2010 in designer mode a TableLayoutPanel (for example 8x8 rowsxcolumns), then I've put in each field of this "matrix" a button. Is there any way how to handle the events centrally? I found that TableLayoutPanel have TabIndexChanged, but I don't know if this will be useful for me.
I'm just trying to find out if is possible this:
I click on second button and get the information on what button I've clicked and will be able to change some of his property - for example icon, or text.
Lets imagine an idea that I will understand tablelayoutpanel as an "matrix" or "array" and I want to work with it something like this:
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)
Is that possible? If yes, how?
Thx
You can have a single method handle all your button click events and then use the sender parameter to modify the image on the button.
e.g.
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();
}
As an aside the TabIndexChanged
would be completely useless to you since its only raised when the TabIndex property of a control gets changed which is typically very rare. You'll rember that the TabIndex property is used to control the order of controls for when the user presses the Tab key.