示例#1
0
        /// <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);
                }
            }
        }