You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过标签获取8×8网格中对应的PictureBox控件?

8×8 PictureBox网格通过坐标查找控件的优化方案

不用写一堆if判断,这几个方法更高效:

方法1:用二维数组直接索引

初始化时把所有PictureBox按坐标顺序存入二维数组,之后通过坐标转数组索引直接获取,速度最快:

// 先定义对应8×8网格的二维数组
PictureBox[,] pictureBoxGrid = new PictureBox[8, 8];

// 初始化阶段把每个PictureBox放到对应位置(假设你的坐标x、y从1到8)
pictureBoxGrid[0, 0] = pb_x1y1; // x=1,y=1对应数组索引[0,0]
pictureBoxGrid[0, 1] = pb_x1y2; // x=1,y=2对应数组索引[0,1]
// 依次填充完所有8×8的PictureBox控件

// 查找时直接通过坐标转换索引
int targetX = 3;
int targetY = 5;
PictureBox targetBox = pictureBoxGrid[targetX - 1, targetY - 1];

方法2:利用控件命名规则查找

给每个PictureBox按pb_x{X}_y{Y}的规则命名(比如x=2、y=4的控件叫pb_x2_y4),之后通过控件名查找:

int x = 3;
int y = 5;
// 拼接目标控件名
string targetName = $"pb_x{x}_y{y}";
// 查找控件(如果控件在Panel等容器里,替换成容器的Controls)
PictureBox targetBox = this.Controls.Find(targetName, true).FirstOrDefault() as PictureBox;

方法3:用字典存储坐标-控件映射

把坐标组合作为键,PictureBox作为值存入字典,适合需要动态调整的场景:

// 定义字典,用Tuple存储坐标对
Dictionary<Tuple<int, int>, PictureBox> pbMap = new Dictionary<Tuple<int, int>, PictureBox>();

// 初始化时添加映射
pbMap.Add(Tuple.Create(1, 1), pb_x1y1);
pbMap.Add(Tuple.Create(1, 2), pb_x1y2);
// 依次添加所有控件的坐标与控件映射

// 查找时
var targetCoord = Tuple.Create(3, 5);
if (pbMap.TryGetValue(targetCoord, out PictureBox targetBox))
{
    // 找到目标控件,执行后续逻辑
}

内容的提问来源于stack exchange,提问作者Tor Edlund

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:35:04