Ibr*_*taz 19 c# menuitem winforms
我实施了我的解决方案(基本解决方案),我很高兴.
问题是当我使用'Add'方法向ToolStripItemCollection添加新项时,我得到一些重载......有意义的一个是字符串参数,图像参数和EventHandler参数.
因为我的下拉列表将在RunTime中用作动态历史记录,这意味着它在编译时将变为空.这意味着我无法通过使用设计器表面的标准路径添加事件处理程序(单击时).我被迫使用上述的重载.
我的图像对我没用,但动态添加事件处理程序是我感兴趣的并需要帮助.
网址:http://msdn.microsoft.com/en-us/library/bxdt0s8t.aspx
没有其他超载可以帮助我,所以我必须使用一个图像......任何人都有任何想法来解决这个问题并告诉我如何完全满足这个重载版本的add方法.
TIA.
更新:我在当前项目中再次执行此操作但使用更多更流畅的代码但原理相同,在运行时动态添加事件处理程序.我回家后会用一些示例代码更新这个.
jas*_*onh 35
我这样做的方法是创建一个数组,ToolStripMenuItems并用我正在添加的项填充该数组.我创建了一个方法来处理click事件,并让它检查我在运行时创建的每个项目的独特之处.您可以尝试使用每个的Name或Tag属性ToolStripMenuItem.然后AddRange在您要添加的菜单中使用.所以你的代码看起来像这样:
private void BuildMenuItems()
{
ToolStripMenuItem[] items = new ToolStripMenuItem[2]; // You would obviously calculate this value at runtime
for (int i = 0; i < items.Length; i++)
{
items[i] = new ToolStripMenuItem();
items[i].Name = "dynamicItem" + i.ToString();
items[i].Tag = "specialDataHere";
items[i].Text = "Visible Menu Text Here";
items[i].Click += new EventHandler(MenuItemClickHandler);
}
myMenu.DropDownItems.AddRange(items);
}
private void MenuItemClickHandler(object sender, EventArgs e)
{
ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender;
// Take some action based on the data in clickedItem
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63820 次 |
| 最近记录: |