Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#图文框矩阵索引_C#_Matrix_Indexing_Picturebox - Fatal编程技术网

c#图文框矩阵索引

c#图文框矩阵索引,c#,matrix,indexing,picturebox,C#,Matrix,Indexing,Picturebox,所以我创建了一个picturebox矩阵,我想得到每个picturebox的索引,在该矩阵中单击的picturebox的“I”和“j” 在这里,我创建了矩阵和单击方法: for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) { place[i, j] = new PictureBox(); place[i, j].P

所以我创建了一个picturebox矩阵,我想得到每个picturebox的索引,在该矩阵中单击的picturebox的“I”和“j”

在这里,我创建了矩阵和单击方法:

for (int i = 0; i < 3; i++)
            for (int j = 0; j < 3; j++)
            {
                place[i, j] = new PictureBox();
                place[i, j].Parent = table;
                place[i, j].Size = new Size(100, 100);
                place[i, j].Location = new Point(100 * i + 20 * i, 100 * j + 20 * j);
                place[i, j].Cursor = Cursors.Hand;
                place[i, j].Click += new EventHandler(p_Click);
            }

 void p_Click(object sender, EventArgs e)
    {
        var current = sender as PictureBox;
    }
for(int i=0;i<3;i++)
对于(int j=0;j<3;j++)
{
place[i,j]=新的PictureBox();
位置[i,j]。父项=表;
位置[i,j]。尺寸=新尺寸(100100);
位置[i,j]。位置=新点(100*i+20*i,100*j+20*j);
place[i,j].Cursor=Cursors.Hand;
放置[i,j]。单击+=新建事件处理程序(p_单击);
}
无效p_单击(对象发送者,事件参数e)
{
var current=发送方为PictureBox;
}

如何获得“I”和“j”?

您知道单击的位置

确保它相对于图像的左上角,然后简单的整数算法将为您提供单击的单元格:

int i = location.X / 100;
int j = location.Y / 100;

我注意到你有一个偏移量(一个边框),所以你也必须考虑到这一点。

你可以保存索引
3*I+j
,比如,在
PictureBox.Tag
中,然后在处理程序中检索它。

你可以反向操作,并使用位置来确定单击了哪个PB。嗯,问题是,我想创建另一个int矩阵,我想在第二个int矩阵的点击图片框的位置放置一个数字int。你可以存储@ChrisF答案中的int。