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

HK1*_*HK1 4 .net datagridview winforms

可能的重复:
一键直接访问 DataGridView 组合框?

我确信这种行为是设计使然,但我觉得在很多情况下它并不直观。

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

有什么方法可以更改行为,以便用户可以移动到不同的行并在第一次或至少第二次单击后内联编辑现有文本?

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

我剩下的唯一问题是,当用户使用选项卡移至下一条记录或单击下一个单元格时,整个文本会立即被选中,这可能会导致无意的覆盖。有一个简单的解决办法吗?

Edit2:
您为 edit1 提供的解决方案确实有效,但有一个问题。第一次单击不同的单元格后,光标将始终位于文本的末尾。我不认为这真的是一个如此糟糕的问题,所以我不会担心尝试修复它。

Pri*_*ank 6

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

一键直接访问DataGridView组合框?

http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/cab3c9eb-4c86-475e-8cbd-dee6b235765a/

[对于您的编辑部分答案示例]

http://www.pcreview.co.uk/forums/datagridviewtextboxeditingcontrol-dont-want-text-initially-sele-t2526222.html

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);
}
}
Run Code Online (Sandbox Code Playgroud)