Winform DataGridViewTextBoxCell 編輯新增右鍵選單,編輯選中文字

XSpringSun發表於2023-01-16

image

如上是我們使用DataGridView時,編輯單元格右鍵會出現系統選單。現在我們新增自己的右鍵選單,並可以操作選中文字。

DataGridViewTextBoxCell:

DataGridViewTextBoxCell 類是一種專用型別 DataGridViewCell ,用於顯示基於文字的單個可編輯資訊字串。 當前選定的 DataGridViewTextBoxCell 控制元件承載一個 DataGridViewTextBoxEditingControl 控制元件,使用者可以編輯單元格的值, (假定 ReadOnly 屬性 DataGridViewTextBoxCell 設定為 false) 。

基於以上文件對DataGridViewTextBoxCell的介紹我們知道DataGridViewTextBoxCell在編輯的時候實際是承載了一個DataGridViewTextBoxEditingControl控制元件。那麼我們可以從DataGridViewTextBoxEditingControl控制元件下手。

DataGridViewTextBoxEditingControl:

DataGridViewTextBoxEditingControl 是實現 介面的專用型別的 TextBox 控制元件 IDataGridViewEditingControl ,允許在單元格處於編輯模式時將其託管在 DataGridViewTextBoxCell 中。
處理 事件以 EditingControlShowing 在單元格進入編輯模式時執行編輯控制元件的自定義初始化。 若要自定義控制元件的顯示特徵,請設定 屬性返回 DataGridViewEditingControlShowingEventArgs.CellStyle 的 物件的屬性,而不是設定 屬性返回的控制元件的屬性 DataGridViewEditingControlShowingEventArgs.Control 。

如上描述我在EditingControlShowing事件中找到了新增右鍵的思路。

        private void dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            e.Control.ContextMenuStrip = contextMSEdit;
        }

image

右鍵功能:

        private void 我選擇的文字ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var editingControl = contextMSEdit.SourceControl as DataGridViewTextBoxEditingControl;
            var selectText = editingControl.SelectedText;
           
            MessageBox.Show(selectText);
        }

image

相關文章