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

VB.NET自动加载图片赋值PictureBox时触发未处理ArgumentException异常求解

问题根因
  • 资源缺失导致无效赋值:你的循环要加载72张图片,对应的资源名是_0、_5、_10……直到_355,如果你的项目资源里不存在下标≥62对应的资源(也就是_305及以上步长为5的命名图片),My.Resources.ResourceManager.GetObject会返回空值,将空值赋值给PictureBox的Image属性就会触发System.ArgumentException报错。
  • 数组长度不足:如果你声明Image数组时的最大下标小于72,访问62~72下标时本应触发索引越界错误,但若有异常捕获逻辑吞掉了越界错误,最终也可能表现为赋值时的参数异常。
修复步骤
  1. 先给资源加载逻辑加校验,确认是否存在缺失资源,修改加载代码如下:
Dim Count2 As Integer = 1
Dim ImageCount As Integer = 0
' 请先确认你的Image数组声明长度足够,例如 Dim Image(72) As Image
For Count2 = 1 To 72
    Dim resObj = My.Resources.ResourceManager.GetObject("_" + ImageCount.ToString)
    ' 校验资源是否存在
    If resObj Is Nothing Then
        MessageBox.Show("缺失资源:_" & ImageCount.ToString & ",对应数组下标:" & Count2.ToString)
        Exit For
    End If
    ' 校验资源是否为有效图片类型
    If Not TypeOf resObj Is Image Then
        MessageBox.Show("资源_" & ImageCount.ToString & "不是有效图片类型")
        Exit For
    End If
    Image(Count2) = CType(resObj, Image)
    ImageCount = ImageCount + 5
Next Count2
  1. 根据第一步的提示补全缺失的资源,或者调整循环次数匹配实际的资源数量。
  2. 给PictureBox赋值逻辑加非空判断,避免运行时崩溃:
If CurrentImage >= 1 AndAlso CurrentImage <= 72 AndAlso Image(CurrentImage) IsNot Nothing Then
    picMyShip.Image = Image(CurrentImage)
End If

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 15:24:03