如上是我們使用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;
}
右鍵功能:
private void 我選擇的文字ToolStripMenuItem_Click(object sender, EventArgs e)
{
var editingControl = contextMSEdit.SourceControl as DataGridViewTextBoxEditingControl;
var selectText = editingControl.SelectedText;
MessageBox.Show(selectText);
}