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

如何使用循环无重复代码将多张图片加载到PictureBox控件中

你当前的核心问题是:拼接得到的pbSpineNum是字符串类型的控件名称,不是实际的PictureBox控件实例,自然无法直接访问Image属性,以下是两种可直接落地的实现方案:

方案1:通过窗体的Controls集合查找对应名称的控件

不需要提前调整现有控件定义,直接在循环内按名称查找即可,修改后代码如下:

private void btnUse19_Click(object sender, EventArgs e)
{
    string applicationDirectory = Application.ExecutablePath;
    //使用学号作为索引获取应用程序的文件路径
    string editedApplicationDirectory = applicationDirectory.Substring(0, applicationDirectory.IndexOf("19001700"));
    // 提前拼接资源根路径,避免循环内重复计算,Path.Combine可自动适配路径分隔符避免出错
    string resRootPath = Path.Combine(editedApplicationDirectory, "19001700", "Resources");

    for (int i = 1; i <= 10; i++)
    {
        string pbName = "pbSpine" + i.ToString();
        // 查找控件,第二个参数true表示递归查找子容器内的控件
        PictureBox pb = Controls.Find(pbName, true).FirstOrDefault() as PictureBox;
        if (pb == null) continue; // 没找到对应控件直接跳过

        string picPath = Path.Combine(resRootPath, $"Spine {i}.png");
        pb.Image = Image.FromFile(picPath);
    }
}

方案2:提前将PictureBox控件存入数组(运行效率更高)

如果控件数量固定,可在窗体初始化时一次性把对应PictureBox存入数组,循环时直接访问数组元素即可,不需要每次查找控件:

// 窗体类内先定义控件数组
private PictureBox[] spinePBs;

private void Form1_Load(object sender, EventArgs e)
{
    // 按顺序把对应控件存入数组,仅需要初始化一次
    spinePBs = new PictureBox[] { pbSpine1, pbSpine2, pbSpine3, pbSpine4, pbSpine5, pbSpine6, pbSpine7, pbSpine8, pbSpine9, pbSpine10 };
}

private void btnUse19_Click(object sender, EventArgs e)
{
    string applicationDirectory = Application.ExecutablePath;
    string editedApplicationDirectory = applicationDirectory.Substring(0, applicationDirectory.IndexOf("19001700"));
    string resRootPath = Path.Combine(editedApplicationDirectory, "19001700", "Resources");

    for (int i = 0; i < spinePBs.Length; i++)
    {
        string picPath = Path.Combine(resRootPath, $"Spine {i+1}.png");
        spinePBs[i].Image = Image.FromFile(picPath);
    }
}

内容的提问来源于stack exchange,提问作者Kyle Warren

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:51:03