C# WinForms中如何选中DataGridView单元格内部分文本?
解决C# WinForms只读DataGridView单元格选部分文本的问题
要实现类似Access中只读单元格可选中部分文本的效果,核心是让单元格进入编辑模式但限制编辑控件不可修改,具体步骤如下:
- 调整DataGridView基础设置
先将DataGridView的ReadOnly属性设为false(否则无法进入编辑模式),再把需要实现该效果的列或单元格的ReadOnly设为true。同时设置编辑触发模式,方便用户快速进入编辑状态:
// 在Form加载或构造函数中设置 dataGridView1.ReadOnly = false; // 示例:设置名为"Content"的列为只读 dataGridView1.Columns["Content"].ReadOnly = true; // 设置点击单元格即进入编辑模式 dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;- 调整DataGridView基础设置
- 处理EditingControlShowing事件
当编辑控件显示时,将对应的TextBox设为只读并启用快捷键,确保能选中文本且无法修改:
private void DataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (e.Control is TextBox textBox) { textBox.ReadOnly = true; textBox.ShortcutsEnabled = true; // 启用复制等快捷键 } }- 处理EditingControlShowing事件
- 绑定事件
记得在Form的初始化代码中绑定上述事件:
dataGridView1.EditingControlShowing += DataGridView1_EditingControlShowing;- 绑定事件
这样设置后,用户点击只读单元格会自动进入编辑模式,此时可以自由选中部分文本执行复制等操作,但无法修改单元格内容,完全匹配你想要的效果。
内容的提问来源于stack exchange,提问作者Jack Mawey
相关产品推荐
相关产品推荐

