如何在User Control的get/set中为按钮添加背景图并嵌入资源跨项目使用
用户控件嵌入图片及代码加载方案
需求说明
- 需通过代码为用户控件内的按钮加载16x16px内置背景图,后续支持用户自定义替换该图片
- 需将图片嵌入控件程序集,保证控件迁移到其他项目时图片可正常显示
初始代码
private Bitmap buttonResetImage = null;// <-- 此处需要加载默认图片 public Bitmap ButtonResetImage { get { return buttonResetImage; } set { buttonResetImage = value; btnReset.BackgroundImage = buttonResetImage; btnReset.BackgroundImageLayout = ImageLayout.Center; } }
正确实现步骤
- 先将目标图片添加到控件项目的资源文件中:右键项目 → 选择「属性」→ 切换到「资源」 tab → 点击「添加资源」→ 选择「添加现有文件」,选中你的16x16px图片,保存后将资源文件中对应图片的「生成操作」属性修改为「嵌入的资源」,确保图片被编译到程序集内,迁移项目不会丢失。
- 初始化字段时通过全局命名空间引用资源即可:
private Bitmap buttonResetImage = global::SliderControl.Properties.Resources.Reset;
常见报错说明
如果省略global::前缀,直接写SliderControl.Properties.Resources.Reset,会触发CS0117错误:
Error CS0117 'SliderControl' does not contain a definition for 'Properties' SliderControl
这是因为如果当前作用域下存在同名的SliderControl类/成员,编译器会优先匹配局部定义,无法找到项目根下的Properties资源类。global::前缀会强制编译器从全局根命名空间开始查找,即可解决该问题。
内容的提问来源于stack exchange,提问作者alphabeta
相关产品推荐
相关产品推荐

