Mam pytanie dotyczące MenuStrip w .NET (C #). Zastanawiam się, jak ustawić wartość dla całego menu (również ze wszystkimi elementami drzewa menu)
Menu.Enabled = false
Chodzi o zablokowanie skrótów w menu. W specyfikacji piszą że trzeba to zrobić ręcznie dla każdego elementu.
Czy istnieje prostsze rozwiązanie niż użycie pętli foreach zagnieżdżonej w innej pętli foreach?
public void LockForm(bool enabled){
foreach (Control c in f.Controls)
{
if (c is MenuStrip)
{
foreach (ToolStripMenuItem z in ((MenuStrip)c).Items)
{
ReflectionEnableItem(z, enabled);
}
}
}
}
private static void ChangeStateItem(ToolStripMenuItem z, bool enabled)
{
if (z.HasDropDown)
{
foreach (object z1 in z.DropDownItems)
{
if (z1 is ToolStripMenuItem)
{
ToolStripMenuItem subMenu = (ToolStripMenuItem)z1;
ReflectionEnableItem(subMenu, enabled);
}
}
}
else
{
z.Enabled = !enabled;
}
}
Chcę zablokować wszystkie okna i wszystkie kontrolki (w tym skróty klawiaturowe) na czas wykonywania operacji w tle.