c# - ToolStripButton:以编程方式分配图像有什么问题

标签 c# toolstripbutton

有一个带有 ToolStrip 的窗体。此 ToolStrip 包含一个 ToolStripButton。我想为这个按钮分配一个图像:

this.btnSaveFile.Image = Bitmap.FromFile("C:\\Work\\Icons\\png\\save.png");

只有在指定路径下有save.png时才有效。否则,我会收到 FileNotFound 异常。

如果我通过 Form Designer 创建一个 Form,Visual Studio 将创建如下代码:

this.toolStripButton9.Image = ((System.Drawing.Image) (resources.GetObject("toolStripButton9.Image")));

这里的toolStripButton9.Image不是真名。 Visual Studio 获取我的文件 save.png 并将其转换为 toolStripButton9.Image。

但是我在没有设计器的情况下以编程方式创建了一个表单。我的问题是如何以编程方式将图像分配给 ToolStripBotton?

我尝试将图像添加到项目中,但没有太大帮助。我不知道如何让 Visual Studio 获取它并将其嵌入到我的可执行文件中,这样我就不需要在指定位置使用该文件。

在 MSDN 中,我只看到类似 that 的解决方案:

this.toolStripButton1.Image = Bitmap.FromFile("c:\\NewItem.bmp");

但它并没有像我上面所说的那样工作。我知道有一个简单的解决方案,但没有看到。你能给我一个提示吗?

最佳答案

在 Visual Studio 中,在解决方案资源管理器中打开“属性”文件夹,然后打开 Resources.resx 文件并将现有图像文件添加为资源。然后,您可以通过 Resource 静态类以编程方式使用它:

Image x = Resources.MyResourceImage;

我建议的代码的完整示例:

using System.Windows.Forms;
using Testapplication.Properties;

namespace Testapplication {
    public class Class1 {
        public Class1() {
            Form MyForm = new Form();
            ToolStrip MyToolStrip = new ToolStrip();
            MyForm.Controls.Add(MyToolStrip);

            ToolStripButton MyButton = new ToolStripButton();
            MyToolStrip.Items.Add(MyButton);

            MyButton.Image = Resources.MyResourceImage;

            MyForm.Show();
        }
    }
}

不要忘记将 using 添加到 YourApps 的 Properties 命名空间。您的 Resources.resx (.cs) 文件位于该命名空间中,用于提供图像等强类型对象引用。在您的情况下,将“MyResourceImage”替换为“保存”(省略引号)。

附言。看一眼我的 Resources.designer.cs 文件中最重要的部分:

internal static System.Drawing.Bitmap MyResourceImage {
    get {
        object obj = ResourceManager.GetObject("MyResourceImage", resourceCulture);
        return ((System.Drawing.Bitmap)(obj));
    }
}

关于c# - ToolStripButton:以编程方式分配图像有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1802267/

相关文章:

C# 加载和卸载表单

c# - Volatile.Read 和 Volatile.Write 背后的逻辑是什么?

c# - 动态更改 datagridview 单元格颜色

c# - 更改 ToolStripButton 上的 ToolTipText 延迟时间

c# - 如何禁止在 ToolStripButton 上显示工具提示文本?

c# - 按键使用 list<int> 作为 linq 组

c# - 为什么我的动态样式表 url 在 MVC 中不起作用?

c# - 如何向 ContextMenuStrip 和 ToolStrip 添加相同的 ToolStripButtons?

c# - 如何在 C# 中设置 Control.Parent 属性

C# 告知如何在选择工具条上的图像后对其进行更改