DataGridViewCell编辑模式中的Ctrl C复制了整个行



我有一个datagrid,它的一列带有文本,我想允许用户复制文本。我已经设置了例程以复制整个单元格或行,但是在编辑单元格和键入ctrl C时,我有问题。

这是我使用的代码,以允许编辑单元格。进入内部后,我可以突出显示文本,然后右键单击以进行复制。这很好,如果我突出显示文本并键入ctrl c,则它会复制行,而不是突出显示的文本。

我不想创建自己的班级,如果不可能,我只会将其视为原样。

private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
{
    if (dataGridView1.EditingControl == null ||
    dataGridView1.CurrentCell.EditType != typeof (DataGridViewTextBoxEditingControl))
    return;
    dataGridView1.CancelEdit();
    dataGridView1.EndEdit();
}
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{
    if (dataGridView1.CurrentCell.EditType == typeof(DataGridViewTextBoxEditingControl))
    {
    dataGridView1.BeginEdit(false);
    }
}

我的问题与OP完全相同,需要一个略有差异的解决方案。我需要DataGridViewSelectionMode.fullrowselect而不是CellSelect。我能够通过执行以下操作来实现这一目标:

datagridview1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
datagridview1.ClipboardCopyMode = DataGridViewClipboardCopyMode.Disable;
datagridview1.MultiSelect = false;

我相信设置夹板copymode禁用会破坏内置的网格功能,而剩下的是标准的MS Windows行为。因此,我能够在可编辑的单元格中选择文本,然后输入Ctrl-C复制"仅"选定的文本。
- 或 - 自从首次发布以来,.NET版本之间存在行为变化。无论如何,使用Visual Studio 2013,.NET 4.5和Windows 7。

对我有用。

也要注意:我的情况我只关心能够复制/粘贴可编辑的列/单元。该解决方案实现了这一点。右键单击仍然有效。

其他可能对观众很重要的网格设置:

datagridview1.EditMode = DataGridViewEditMode.EditProgrammatically;
datagridview1.EnableHeadersVisualStyles = false;
datagridview1.RowHeadersVisible = false;

如果将SelectionMode属性作为FullRowSelect,则即使单元格处于编辑模式,它也会复制整个行。将值更改为CellSelect。将以下属性设置为仅使用CTRL C。

复制编辑单元格内容。
dataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect;
dataGridView1.MultiSelect = false;

相关内容

  • 没有找到相关文章

最新更新