我有一个由代码中命名为GridEl
的修改按钮构成的网格。每个GridEl
都在名为Grid[,]
的数组中,我想通过点击它来获取GridEl
在数组中的位置,我该怎么做?
例如,它必须在控制台中写入行和列,这就是它在控制台中的外观:“Row:2; Column:5”。当然每个按钮都必须写自己的位置。*
void CreateGrid()
{
GridEl[,] Grid = new GridEl[4, 6];
int c, r, gcount; // c = Column, r = Row, gcount = GridEls count
c = 0; r = 0; gcount = 0;
while ((c < 7)&&(r < 5) && (gcount != 24)) //Loop that creates grid
{
if ((c == 6) && (r < 4))
{
r++;
c = 0;
}
Grid[r, c] = new GridEl();
Grid[r, c].Size = new System.Drawing.Size(64, 64);
Grid[r, c].Location = new System.Drawing.Point(21 * 3 * c, 21 * 3 * r);
MainForm.Controls.Add(Grid[r,c]);
c++;
gcount++;
}
}
public class GridEl : Button
{
//here is the code of GridEl
}
答案 0 :(得分:0)
将此用于GridEl按钮类定义
public class GridEl : Button
{
public int R { get; set; }
public int C { get; set; }
}
将此添加到您的while
循环
Grid[r, c].R = r;
Grid[r, c].C = c;
Grid[r, c].Click += OnClick;
最后是按钮的Click
事件处理程序
private void OnClick(object sender, EventArgs eventArgs)
{
GridEl thisButton = sender as GridEl;
Console.WriteLine($"Row: {thisButton.R}; Column: {thisButton.C}");
}
您在此处所做的只是在网格按钮本身上设置行和列值,因此它始终知道值是什么,并且在需要时可以访问。