【问题标题】:WinForm C# programatically embedding an image in resxWinForm C# 以编程方式在 resx 中嵌入图像
【发布时间】:2012-05-23 19:00:08
【问题描述】:

我正在将 VS 2005 用于 Windows 应用程序。

过去在 UI 表单中添加了代码,使得表单不再在设计器中打开。

我现在必须在 System.Windows.Forms.ImageList 中添加一个图标。

现在它只是通过以下方式从 InitilizedComponent() 中的资源文件中添加图像,我相信这最初是由设计器生成的。

this.MyimageListToolbar.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("MyimageListToolbar.ImageStream")));

为了添加我的新图标,我可以简单地说

图标 myIcon = new Icon(@"mypath/myicon.ico"); this.imgLstToolbar.Images.Add(myIcon);

但问题是我必须在安装项目中包含此 ico 文件,以便在安装此软件时复制它。这是不可取的。安装应用程序时,不会复制添加到 imagelist 工具栏的所有其他图像。

有没有一种方法可以在不使用设计器的情况下以编程方式添加图标或添加图标,并且仍然将其包含在资源文件中,这样我就不必复制 ico 文件来运行 exe。

谢谢,

【问题讨论】:

    标签: c# winforms resx


    【解决方案1】:

    您可以像这样将图标添加到“资源文件”中..

    右键单击文件夹“资源”->“添加”->“现有项目...”

    【讨论】:

    • 是的,我已经完成了,我可以看到解决方案资源管理器中列出的图标,但由于某种原因,以下行不包括它((System.Windows.Forms.ImageListStreamer)(资源.GetObject("MyimageListToolbar.ImageStream")));我已经尝试将图标作为“内容”和“嵌入式资源”
    • 你将什么作为参数传递给resources.GetObject()?我认为这是一个正确命名的问题。
    • 如果您将 myicon.ico 添加到资源中,您应该可以像这样访问它:global::NamespaceHere.Properties.Resources.myicon;
    • 我传递的参数是rsx文件中的一个节点。 rsx 文件中该节点中的值都是十六进制代码,我相信它代表了 MyImageListToolBar 中添加的所有其他图像。由于某种原因,我相信那里的价值不包括我要添加的新图标。
    猜你喜欢
    • 2023-03-11
    • 2019-02-12
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 2015-11-16
    • 2017-09-10
    • 1970-01-01
    • 2011-05-30
    相关资源
    最近更新 更多