コード例 #1
0
        // Click handler for all edit menus.  Determine the focused window
        // and framework control, then call a method to take the appropriate
        // action, based on the type of the control.
        private void Menu_Click(object sender, System.EventArgs e)
        {
            MenuItem miClicked = sender as MenuItem;

            IntPtr    hFocus    = Win32API.GetFocus();
            Control   ctlFocus  = Win32API.GetFrameworkControl(hFocus);
            MenuIndex menuIndex = (MenuIndex)miClicked.Index;

            if (ctlFocus is TextBoxBase)
            {
                DoTextBoxCommand((TextBoxBase)ctlFocus, menuIndex);
            }
            else if (ctlFocus is ComboBox && ((ComboBox)ctlFocus).DropDownStyle == ComboBoxStyle.DropDown)
            {
                DoComboBoxCommand(hFocus, (ComboBox)ctlFocus, menuIndex);
            }
            else
            {
                ISupportsEdit ctlEdit = GetISupportsEditControl(ctlFocus);
                if (ctlEdit != null)
                {
                    DoISupportsEditCommand(ctlEdit, menuIndex);
                }
            }
        }
コード例 #2
0
        // Click handler for all edit menus.  Determine the focused window
        // and framework control, then call a method to take the appropriate
        // action, based on the type of the control.
        private void Menu_Click(object sender, System.EventArgs e)
        {
            ToolStripMenuItem miClicked = sender as ToolStripMenuItem;

            IntPtr    hFocus    = Win32API.GetFocus();
            Control   ctlFocus  = Win32API.GetFrameworkControl(hFocus);
            MenuIndex menuIndex = (MenuIndex)miClicked.Tag;

            if (ctlFocus is TextBoxBase)
            {
                DoTextBoxCommand((TextBoxBase)ctlFocus, menuIndex);
            }
            else if (ctlFocus is ComboBox && ((ComboBox)ctlFocus).DropDownStyle == ComboBoxStyle.DropDown)
            {
                DoComboBoxCommand(hFocus, (ComboBox)ctlFocus, menuIndex);
            }
            else if (ctlFocus is System.Windows.Forms.DataGridView)
            {
                DoDataGridViewCommand((System.Windows.Forms.DataGridView)ctlFocus, menuIndex);
            }
            else if (ctlFocus is ICSharpCode.TextEditor.TextArea)
            {
                DoICSharpCodeTextEditorCommand(ctlFocus as ICSharpCode.TextEditor.TextArea, menuIndex);
            }
            else
            {
                ISupportsEdit ctlEdit = GetISupportsEditControl(ctlFocus);
                if (ctlEdit != null)
                {
                    DoISupportsEditCommand(ctlEdit, menuIndex);
                }
            }
        }
コード例 #3
0
        // When the user clicks on the Edit menu, determine the focused control,
        // call a method to get state flags, then setup the edit menu based
        // on the flags.
        //private void Edit_Popup(object sender, System.EventArgs e)
        void m_miEdit_DropDownOpening(object sender, EventArgs e)
        {
            IntPtr    hFocus     = Win32API.GetFocus();
            Control   ctlFocus   = Win32API.GetFrameworkControl(hFocus);
            EditState eEditState = EditState.None;

            if (ctlFocus is TextBoxBase)
            {
                eEditState = GetTextBoxEditState((TextBoxBase)ctlFocus);
            }
            else if (ctlFocus is ComboBox && ((ComboBox)ctlFocus).DropDownStyle == ComboBoxStyle.DropDown)
            {
                eEditState = GetComboBoxEditState(hFocus, (ComboBox)ctlFocus);
            }
            else if (ctlFocus is System.Windows.Forms.DataGridView)
            {
                eEditState = GetDataGridViewEditState((System.Windows.Forms.DataGridView)ctlFocus);
            }
            else if (ctlFocus is ICSharpCode.TextEditor.TextArea)
            {
                eEditState = GetICSharpCodeTextEditor(ctlFocus as ICSharpCode.TextEditor.TextArea);
            }
            else
            {
                // If this is not a simple control, search up the parent chain for
                // a custom editable control.
                ISupportsEdit ctlEdit = GetISupportsEditControl(ctlFocus);
                if (ctlEdit != null)
                {
                    eEditState = GetISupportsEditState(ctlEdit);
                }
            }

            //if (GetEditState != null)
            //{
            //    eEditState = GetEditState(ctlFocus, EventArgs.Empty);
            //}

            // Show or hide and enable or disable menu controls according to eEditState.
            m_miUndo.Visible           = (eEditState & EditState.UndoVisible) != 0;
            m_miRedo.Visible           = (eEditState & EditState.RedoVisible) != 0;
            m_miDividerRedoCut.Visible = (m_miUndo.Visible == true || m_miRedo.Visible == true);
            m_miUndo.Enabled           = (eEditState & EditState.UndoEnabled) != 0;
            m_miRedo.Enabled           = (eEditState & EditState.RedoEnabled) != 0;
            m_miCut.Enabled            = (eEditState & EditState.CutEnabled) != 0;
            m_miCopy.Enabled           = (eEditState & EditState.CopyEnabled) != 0;
            m_miPaste.Enabled          = (eEditState & EditState.PasteEnabled) != 0;
            m_miDelete.Enabled         = (eEditState & EditState.DeleteEnabled) != 0;
            m_miSelectAll.Enabled      = (eEditState & EditState.SelectAllEnabled) != 0;
            m_miProperties.Enabled     = (eEditState & EditState.PropertiesEnabled) != 0;
        }
コード例 #4
0
        // Set EditState flags for ISupportsEdit controls.
        private EditState GetISupportsEditState(ISupportsEdit control)
        {
            EditState eState = EditState.None;

            if (control.UndoVisible)
            {
                eState |= EditState.UndoVisible;
            }
            if (control.CanUndo)
            {
                eState |= EditState.UndoEnabled;
            }
            if (control.RedoVisible)
            {
                eState |= EditState.RedoVisible;
            }
            if (control.CanRedo)
            {
                eState |= EditState.RedoEnabled;
            }
            if (control.CanCut)
            {
                eState |= EditState.CutEnabled;
            }
            if (control.CanCopy)
            {
                eState |= EditState.CopyEnabled;
            }
            if (control.CanPaste)
            {
                eState |= EditState.PasteEnabled;
            }
            if (control.CanSelectAll)
            {
                eState |= EditState.SelectAllEnabled;
            }
            if (control.CanDelete)
            {
                eState |= EditState.DeleteEnabled;
            }
            if (control.CanShowProperties)
            {
                eState |= EditState.PropertiesEnabled;
            }
            return(eState);
        }
コード例 #5
0
        // Perform the command associated with MenuIndex on the specified ISupportsEdit control.
        private void DoISupportsEditCommand(ISupportsEdit control, MenuIndex menuIndex)
        {
            switch (menuIndex)
            {
            case MenuIndex.Undo:            control.Undo();                         break;

            case MenuIndex.Redo:            control.Redo();                         break;

            case MenuIndex.Cut:                     control.Cut();                          break;

            case MenuIndex.Copy:            control.Copy();                         break;

            case MenuIndex.Paste:           control.Paste();                        break;

            case MenuIndex.SelectAll:       control.SelectAll();            break;

            case MenuIndex.Delete:          control.Delete();                       break;

            case MenuIndex.Properties:      control.ShowProperties();       break;
            }
        }
コード例 #6
0
        // When the user clicks on the Edit menu, determine the focused control,
        // call a method to get state flags, then setup the edit menu based
        // on the flags.
        private void Edit_Popup(object sender, System.EventArgs e)
        {
            IntPtr    hFocus     = Win32API.GetFocus();
            Control   ctlFocus   = Win32API.GetFrameworkControl(hFocus);
            EditState eEditState = EditState.None;

            if (ctlFocus is TextBoxBase)
            {
                eEditState = GetTextBoxEditState((TextBoxBase)ctlFocus);
            }
            else if (ctlFocus is ComboBox && ((ComboBox)ctlFocus).DropDownStyle == ComboBoxStyle.DropDown)
            {
                eEditState = GetComboBoxEditState(hFocus, (ComboBox)ctlFocus);
            }
            else
            {
                // If this is not a simple control, search up the parent chain for
                // a custom editable control.
                ISupportsEdit ctlEdit = GetISupportsEditControl(ctlFocus);
                if (ctlEdit != null)
                {
                    eEditState = GetISupportsEditState(ctlEdit);
                }
            }

            // Show or hide and enable or disable menu controls according to eEditState.
            m_miUndo.Visible           = (eEditState & EditState.UndoVisible) != 0;
            m_miRedo.Visible           = (eEditState & EditState.RedoVisible) != 0;
            m_miDividerRedoCut.Visible = (m_miUndo.Visible == true || m_miRedo.Visible == true);
            m_miUndo.Enabled           = (eEditState & EditState.UndoEnabled) != 0;
            m_miRedo.Enabled           = (eEditState & EditState.RedoEnabled) != 0;
            m_miCut.Enabled            = (eEditState & EditState.CutEnabled) != 0;
            m_miCopy.Enabled           = (eEditState & EditState.CopyEnabled) != 0;
            m_miPaste.Enabled          = (eEditState & EditState.PasteEnabled) != 0;
            m_miDelete.Enabled         = (eEditState & EditState.DeleteEnabled) != 0;
            m_miSelectAll.Enabled      = (eEditState & EditState.SelectAllEnabled) != 0;
            //m_miProperties.Enabled	= (eEditState & EditState.PropertiesEnabled) != 0;
        }