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

时间:2015-10-10 14:32:53

标签: c# winforms user-controls

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

e.g。 [ToolboxBitmap(@" C:\ frame.bmp")]

但我不想使用绝对位置。

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

这是我的代码:

注意: frame.bmp已在我的资源中,操作属性=嵌入式资源用于构建

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

请建议,

由于

3 个答案:

答案 0 :(得分:1)

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

如果您希望这样做,请编辑注释以接收图像对象或将图像保存到临时文件,然后使用其路径,如:

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 :(得分:1)

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

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

  • 项目>添加现有项目>选择您的位图文件
  • 在“解决方案资源管理器”窗口中选择添加的项目。在“属性”窗口中,将“构建操作”设置为“嵌入式资源"
  • 项目>属性>应用程序选项卡>默认命名空间属性很重要,这是您使用的名称,而不是"资源"
  • 仔细检查并运行ildasm.exe。双击Manifest,您应该看到一个类似于:
  • 的条目
.mresource public DefaultNamespace.frame.bmp
{
  // Offset: 0x000000B8 Length: 0x000004F6
}

请注意.mresource名称,即您在属性中添加的名称。修正:

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

更换" DefaultNamespace"用实际名称。

答案 2 :(得分:0)

我发现一些可以帮助您的事情: 如果将图像添加到路径c#并没有为该路径创建名称空间,则可以在该过程中添加空类并使用typeof(thatClass),例如:

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

Project Structure

注意1:ImageLoader是一个空类

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