Я создаю небольшую Winform, в которой я могу просматривать виды еды на моей кухне.
Весь мой запас может отображаться в виде таблицы данных.
Теперь у меня есть меню фильтров, которое содержит выпадающий список элементов, которые можно проверять и не проверять.
В зависимости от того, какие элементы в этом списке отмечены, отображение в сетке данных изменяется. Отображаются только выбранные элементы.
По крайней мере, я так хочу.
В настоящее время в меню 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
Объект o всегда содержит ноль.
Тем не менее, s [0] всегда содержит название типа пищи.
То, что я хочу, - это узнать, проверен ли пункт в этом списке. Если этот флажок установлен, сетка данных должна отображать его. Если нет, не отображать его.
Я заполняю это в конструкторе этим:
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;
}
}
}
Я пробовал объектный браузер, но не могу найти ничего, что может помочь, поэтому я перехожу сюда.