Winform DataGridViewTextBoxCell 编辑添加右键菜单,编辑选中文本

Posted SpringSun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Winform DataGridViewTextBoxCell 编辑添加右键菜单,编辑选中文本相关的知识,希望对你有一定的参考价值。

如上是我们使用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);
        

以上是关于Winform DataGridViewTextBoxCell 编辑添加右键菜单,编辑选中文本的主要内容,如果未能解决你的问题,请参考以下文章

会winform再学wpf简单吗

winform 静态方法 不能使用winform 控件 怎么解决?

什么是winform界面

什么原因导致winform程序崩溃

winform问题 进来看下

WinForm基础