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

使用My.Resources向PictureBox添加资源图片失败求助

VB.NET资源图片动态加载问题解决方案

核心问题原因

ComboBox选中值与资源文件实际名称不匹配,比如选项文本是“百慕大”但资源名是“Bermuda”,或者存在大小写、空格、特殊字符差异,导致ResourceManager.GetObject无法定位资源。

具体修复方法

  • 统一名称匹配规则
    确保ComboBox下拉选项的文本和资源文件的名称完全一致(包括大小写、空格、特殊符号)。例如资源名为Bermuda,ComboBox选项就必须是Bermuda,不能是“百慕大”或“bermuda”。

  • 验证选中值的准确性
    在代码中先输出选中值,确认其与资源名完全吻合:

    Dim firstplace As String = Form1.first_place_list.SelectedItem.ToString()
    Console.WriteLine("当前选中值:" & firstplace) ' 输出到控制台验证
    Dim firstplace_image As Image = My.Resources.ResourceManager.GetObject(firstplace)
    If firstplace_image IsNot Nothing Then
        first_place_flag.Image = firstplace_image
    Else
        MessageBox.Show("未找到对应资源:" & firstplace) ' 资源不存在时提示
    End If
    
  • 使用强类型资源绑定(更稳妥)
    通过绑定数据源分离显示文本和资源名,避免名称匹配错误:

    1. 创建存储显示文本和资源名的类:
      Public Class FlagItem
          Public Property DisplayName As String
          Public Property ResourceName As String
      End Class
      
    2. 在窗体加载时给ComboBox绑定数据:
      first_place_list.DisplayMember = "DisplayName"
      first_place_list.ValueMember = "ResourceName"
      first_place_list.Items.Add(New FlagItem With {.DisplayName = "百慕大", .ResourceName = "Bermuda"})
      first_place_list.Items.Add(New FlagItem With {.DisplayName = "其他地区", .ResourceName = "OtherRegion"})
      
    3. 加载图片时读取选中项的资源名:
      Dim resourceName As String = Form1.first_place_list.SelectedValue.ToString()
      Dim firstplace_image As Image = My.Resources.ResourceManager.GetObject(resourceName)
      first_place_flag.Image = firstplace_image
      
  • 检查资源生成设置
    右键资源文件→属性,确认图片的生成操作设置为“嵌入的资源”,否则资源无法被正确嵌入程序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:56:15