.net WinForms DataGridView-需要单击3次才能编辑单元格中的现有文本

.net WinForms DataGridView-需要单击3次才能编辑单元格中的现有文本,.net,winforms,datagridview,.net,Winforms,Datagridview,可能重复: 我确信这种行为是设计出来的,但我觉得在很多情况下它不是直观的 如果只需单击与当前所在行不同的行中的一个单元格,即可将光标移动到新行,则第一次单击只需将光标移动到该行并高亮显示所单击的整个单元格。第二次单击将选择所有文本,就像您要删除或覆盖它一样。第三次单击将最终将光标定位在文本中单击的位置 是否有任何方法可以更改行为,以便用户可以在第一次或至少第二次单击后移动到其他行并内联编辑现有文本 Edit1: 因此,下面给出的答案很有效。Microsoft讨论站点上的问题(如果启用了Edit

可能重复:

我确信这种行为是设计出来的,但我觉得在很多情况下它不是直观的

如果只需单击与当前所在行不同的行中的一个单元格,即可将光标移动到新行,则第一次单击只需将光标移动到该行并高亮显示所单击的整个单元格。第二次单击将选择所有文本,就像您要删除或覆盖它一样。第三次单击将最终将光标定位在文本中单击的位置

是否有任何方法可以更改行为,以便用户可以在第一次或至少第二次单击后移动到其他行并内联编辑现有文本

Edit1:
因此,下面给出的答案很有效。Microsoft讨论站点上的问题(如果启用了Editonner模式,则无法选择行)似乎已通过Visual Studio 2008解决

我唯一剩下的问题是,当用户使用tab键移动到下一条记录时,或者如果他们在下一个单元格中单击,则会立即选择整个文本,这可能会导致意外覆盖。有没有简单的解决方法

Edit2:

您为edit1提供的解决方案确实有效,只需一个问题。第一次单击其他单元格后,光标将始终位于文本的末尾。我不认为这真的是一个如此严重的问题,所以我不必担心如何修复它。

将DataGridView控件的EditMode属性更改为“Editonner”

[编辑部分答案示例]


为您的Edit1:part编辑了我的ans。
this.myDataGrid.CellEnter += new
DataGridViewCellEventHandler(myDataGrid_CellEnter);

void myDataGrid_CellEnter(object sender, DataGridViewCellEventArgs e)
{
if ((this.myDataGrid.Columns[e.ColumnIndex] is
DataGridViewTextBoxColumn) ||
(this.myDataGrid.Columns[e.ColumnIndex] is
DataGridViewComboBoxColumn))
{
this.myDataGrid.BeginEdit(false);
}
}