/// <summary> /// Process a UseMnemonic property for a tabControl when this was delayed. /// </summary> /// <param name="tabControl">The TabControl to process.</param> private static void ProcessDelayedUseMnemonic(TabControl tabControl) { bool value = (bool)newProperties[tabControl.GetHashCode()][newPropertiesEnum.UseMnemonic]; Form parentForm = tabControl.FindForm(); int code = parentForm.GetHashCode(); if (value) { parentForm.KeyPreview = true; parentForm.KeyDown += TabControl_ParentForm_KeyDown; if (!FormsWithTabsControlsUsingMnemonic.ContainsKey(code)) { FormsWithTabsControlsUsingMnemonic.Add(code, new List<TabControl>()); FormClosedEventHandler handler = new FormClosedEventHandler(delegate(object sender, FormClosedEventArgs e) { FormsWithTabsControlsUsingMnemonic.Remove(code); parentForm.KeyDown -= TabControl_ParentForm_KeyDown; }); parentForm.FormClosed += handler; } FormsWithTabsControlsUsingMnemonic[code].Add(tabControl); } else { parentForm.KeyPreview = false; parentForm.KeyDown -= TabControl_ParentForm_KeyDown; if (FormsWithTabsControlsUsingMnemonic.ContainsKey(code)) { if (FormsWithTabsControlsUsingMnemonic[code].Contains(tabControl)) FormsWithTabsControlsUsingMnemonic[code].Remove(tabControl); if (FormsWithTabsControlsUsingMnemonic[code].Count == 0) FormsWithTabsControlsUsingMnemonic.Remove(code); } } }