После InitializeComponent();
скрываю пункты MenuStrip. Делаю это следующим образом:
string[] elementNames = new string[] {"name1", "name2", "name3"}
foreach (var name in elementNames)
{
var menu_item = msMainMenu.Items.Find(name, true);
menu_item[0].Visible = false;
}
Далее, когда я хочу показать какой либо пункт меню, поиск не находит этот элемент т.е.:
var menu_item = msMainMenu.Items.Find("name1", true);
(menu_item.Count() == 0) = true;
Конечно, как вариант, элементы, на которые изначально воздействовал цикл, можно убрать в массив, затем обращаться уже к нему. Но есть ли ещё какие-нибудь варианты получить экземпляр компонента имея только его имя ToolStripMenuItem.Name
и при ToolStripMenuItem.Visible = false
?
Приведите просто к нужному типу.
Например код скрытия можно написать так:
string[] elementNames = { "name1", "name2", "name3" };
foreach (ToolStripItem item in msMainMenu.Items)
{
item.Visible = !elementNames.Contains(item.Name);
}
А обратиться к определенному объекту так:
var item = msMainMenu.Items.Cast<ToolStripItem>().FirstOrDefault(x => x.Text == "name1");
if (item != null) item.Visible = true;
Везде как видите стоит ToolStripItem
- это тот объект, который содержится в MenuStrip
, значит смело указываем нужный тип и работаем с объектом на прямую, без Find()
.
Если же вы хотите работать с Find
, то смотрите что именно этот метод вам возвращает.
Строка var menu_item = msMainMenu.Items.Find("name1", true);
вернет вам ToolStripItem[]
, то есть массив объектов и если вы уверены, что там будет один ваш объект с нужным именем, то обращайтесь через индекс (menu_item[0].Visible = true;
) или берите с помощью LINQ первый объект (menu_item.FirstOrDefault().Visible = true;
). Не забудьте только обработать вариант с NULL!
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть бд MSSQL в ней таблица в которой в поле Logo типа Image хранятся изображения формата jpeg(да, я знаю что так делать не есть хорошо но у меня такое...
Столкнулся с проблемой в создании ссылки на определенный сайт с помощью кнопки в WPF, можно ли вообще её как-нибудь сделать, или нет? Если можно,...
Есть модельС формы отправляется ajax запросом несколько полей с такими же названиями как и у свойств модели
Необходимо правильно масштабировать ползунокЗадача следующая, при перемещении ползунка с диапазоном от 0 до 10 необходимо менять цвет кнопки