2013-04-24 200 views
3

我有一个使用ContextMenuStrip的C#winForm项目。我基于使用交互动态地将ToolStripMenuItems添加到ContextMenuStrip。当我添加一个新的ToolStripMenuItem时,我将它设置为Text属性和Image属性。我不知道如何设置Image属性,而不需要从它所在的位置获取图像。我如何将想象添加到我的项目中?这里是我的代码是做如何将图像添加到ToolStripMenuItem

 
    ContextMenuStrip cxtMnuStrp = new ContextMenuStrip; 

    private void Button_Click(object sender, EventArgs e) 
    { 
     // some filtering and logic 
     // to determine weather to 
     // create and add a ToolStripMenuItem 
     // blah, blah, blah... 

     ToolStripMenuItem item = new ToolStripMenuItem("uniqueName"); 

     item.Image = Image.FromFile(@"C:\MyFolder\MyIcon.ico"); 

     if (cxtMnuStrp.Items.ContainsKey(item) == false) 
      cxtMnuStrp.Items.Add(item); 
    } 

用一个例子“item.Image = Image.FromFile(@” C:\ MyFolder文件\ MyIcon.ico“)”当我发布我的每台机器必须有“C:\ MyFoler”目录,并且在“C:\ MyFoler”目录中的计算机上也有“MyIcon.ico”。

它似乎正确Plus不,我有我想要的图标添加到我的ToolStripMenuItem

回答

6

你可以保存你的图标在资源文件或保存图像作为嵌入资源每次击中了硬盘驱动器。

使用资源文件。

添加图像作为一个嵌入式资源

您的代码将变为如下所示。

private void BuildContextMenuStrip_Click(object sender, EventArgs e) 
{ 
    ContextMenuStrip cxtMnuStrp = new ContextMenuStrip(); 

    ToolStripMenuItem item = new ToolStripMenuItem("uniqueName") { Image = WindowsFormsApplication2.Properties.Resources.Search.ToBitmap() }; 

    if (cxtMnuStrp.Items.Contains(item) == false) 
     cxtMnuStrp.Items.Add(item); 

    this.ContextMenuStrip = cxtMnuStrp; 
} 

注:

  1. 如果您添加到资源文件中的图标。您必须使用.ToBitmap()将其转换为图像。
  2. 图像现在可用智能感知而不是使用路径字符串。
  3. 我已经将contextMenuStrip添加到上例中的窗体中。

除了提供了关于如何在链接添加资源上面的信息,你可以将它们添加如下

enter image description here

+0

THX !!!!!这完全是我在找的东西。非常感谢! – 2013-04-24 23:02:37

+0

嘿Romulus我还有一个问题......我该如何使图标可点击? – 2013-04-25 01:14:00

+0

ToolStripMenuItem充当一个容器,您可以在其中添加图标或文本标题,或两者都不添加。当你使用鼠标悬停时,它是整个接收焦点的容器,而不仅仅是图像或文本。同样,当您单击它时,会调用ToolStripMenuItem.Click事件。你需要处理这个事件。 – 2013-04-25 02:15:17