【发布时间】:2008-11-28 09:41:54
【问题描述】:
我正在构建一个小型 Winform,我可以在其中查看厨房中的食物类型。
我的整个股票可以通过数据网格视图显示。
现在,我有一个过滤器菜单,其中包含可以选中和取消选中的项目的下拉列表。
根据该列表中的哪些项目被选中,datagridview 中的显示会发生变化。只显示被选中的项目。
至少,这就是我想要的样子。 菜单目前有 5 个项目:肉类、鱼类、水果、蔬菜和其他。
我正在使用一个抽象类 Food,所有其他类都派生自它。 最终我为每块食物制作了一个字符串表示,看起来有点像这样
FoodType*FoodName*AmountInStock*...
所以一个星 * 作为分隔符。
然后我这样做
foreach(Food f in this.kitchen.FoodList)
{
string[] s = f.ToString().Split('*');
Object o = filterMenu.DropDownItems[s[0]];
}
FoodList 是一个 ArrayList。 然后我用 VisualStudio 2008 调试它
Object o 总是包含 null。
然而 s[0] 总是包含食物类型的名称。 我想要的是能够找出该菜单列表上的项目是否被选中。如果选中,datagridview 必须显示它。如果不是,请不要显示它。
我在构造函数中用这个填充它:
public static void Fill(ToolStripMenuItem item, Type food)
{
foreach (string element in Enum.GetNames(food))
{
if (element != "nothing")
{
ToolStripMenuItem it = (ToolStripMenuItem)item.DropDownItems.Add(element);
it.Checked = true;
it.CheckOnClick = true;
}
}
}
我已经尝试过对象浏览器,但找不到任何有用的东西,所以我转向这里。
【问题讨论】:
标签: c# winforms visual-studio-2008