如何在 [ToolboxBitmap("MyResourcePictureFileName")] 上使用资源文件/路径

问题描述 投票:0回答:3

开发自定义控件,想放置自定义图标。这样做尝试使用 [ToolboxBitmap("MyResourcePictureFileName")] 属性中的解决方案资源文件,但未设置图标,而是显示默认用户控件图标。而固定路径工作正常

例如[ToolboxBitmap( @"C: rame.bmp")]

但我不想使用绝对位置。

问题:如何使用我的控件的自定义图像/图标

这是我的代码:

注意: frame.bmp 已经在我的资源中并且Action Property=Embedded Resource for build

// DONT WANT TO USE THIS --> [ToolboxBitmap( @"C:\frame.bmp")]  
[ToolboxBitmap("Resources.frame.bmp")]
[ToolboxItem(true)] 
public partial class MyCustomPanelControl : Panel
{
................
................
}

请指教,

谢谢

c# winforms user-controls
3个回答
1
投票
   [ToolboxBitmap("Resources.frame.bmp")]

资源名称不正确,这是工具箱位图的一个长期存在的问题。首先确保你正确嵌入了位图,不要使用资源设计器:

  • 项目 > 添加现有项目 > 选择您的位图文件
  • 在解决方案资源管理器窗口中选择添加的项目。在“属性”窗口中,将“构建操作”设置为“嵌入式资源”
  • Project > Properties > Application tab > Default namespace property matters,这是您使用的名称而不是“资源”
  • 仔细检查并运行 ildasm.exe。双击 Manifest,您应该会看到类似于以下内容的条目:

.mresource public DefaultNamespace.frame.bmp
{
  // Offset: 0x000000B8 Length: 0x000004F6
}

注意 .mresource 名称,这是您在属性中输入的名称。修正:

[ToolboxBitmap("DefaultNamespace.frame.bmp")]

用实际名称替换“DefaultNamespace”。


1
投票

如果您将图像保存为资源并尝试使用 Properties.Resources.YourImage 获取其路径,它将无法正常工作,因为资源返回的是图像对象而不是其路径,正如您所期望的那样。

如果你想让它工作,编辑你的注释以接收图像对象或将图像保存到临时文件,然后使用它的路径,如:

string IMG_PATH = Path.GetTempPath();
IMG_PATH += "imagemsample.png"; //adds the name of the file you want
Properties.Resources.YourImage.Save(IMG_PATH);

然后你可以:

[ToolboxBitmap(IMG_PATH)]

1
投票

我发现了一些可以提供帮助的东西: 如果您将图像添加到路径

c#
没有为该路径创建命名空间,您可以向该路径添加空类并使用
typeof(thatClass)
,例如:

[ToolboxBitmap(typeof(ImageLoader),@"imagename.png")]

注1:

ImageLoader
是一个空类

注意2:确保您的图像是嵌入资源

© www.soinside.com 2019 - 2024. All rights reserved.