我正在开发一个使用DataGridView控件的WinForm客户端应用程序。我注意到用户需要先单击一次才能选择单元格,然后再单击一次才能编辑它。有什么办法可以将其改为单击一次即可进入编辑模式呢?我记得以前好像看到过类似的功能,但是想不起来那个名字了。
我正在开发一个使用DataGridView控件的WinForm客户端应用程序。我注意到用户需要先单击一次才能选择单元格,然后再单击一次才能编辑它。有什么办法可以将其改为单击一次即可进入编辑模式呢?我记得以前好像看到过类似的功能,但是想不起来那个名字了。
在 DataGridView 的属性中:EditMode -> EditOnEnter
EditMode.EditOnEnter
的问题。
它会偏离很多DataGriView的默认行为,这让人感到不爽。
其中一个问题是,即使明确调用EndEdit方法,编辑的单元格仍然处于编辑模式(你必须点击其他控件才能让datagridview单元格失去焦点)。 private void myDatagridView_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
hitTestInfo = myDatagridView.HitTest(e.X, e.Y);
if (hitTestInfo.Type == DataGridViewHitTestType.Cell)
myDatagridView.BeginEdit(true);
else
myDatagridView.EndEdit();
}
}
public class cellEdit
{
int Row;
int Col;
readonly int elapsedtime;
readonly Stopwatch SW;
public cellEdit(int iElapsedTimeInMillisecons)
{
elapsedtime = iElapsedTimeInMillisecons;
SW = Stopwatch.StartNew();
}
public void Start(int iRow, int iCol)
{
{
Row = iRow;
Col = iCol;
SW.Restart();
}
}
public bool Stop(int iRow, int iCol)
{
SW.Stop();
if (iRow == Row && iCol == Col) if (SW.ElapsedMilliseconds > elapsedtime) return true;
return false;
}
}
public cellEdit GetCellEdit = new GetCellEdit(500); // 500mS
添加 datagridview CellMouseUp 和 CellMouseDown 事件
private void dataGridView_List_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex > 0 && e.RowIndex < dataGridView_List.Rows.Count && e.ColumnIndex > 0 && e.ColumnIndex < dataGridView_List.Columns.Count)
GetCellEdit.Start(e.RowIndex, e.ColumnIndex);
}
private void dataGridView_List_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex > 0 && e.RowIndex < dataGridView_List.Rows.Count && e.ColumnIndex > 0 && e.ColumnIndex < dataGridView_List.Columns.Count)
if (GetCellEdit.Stop(e.RowIndex, e.ColumnIndex))
{
dataGridView_List.CurrentCell = dataGridView_List.Rows[e.RowIndex].Cells[e.ColumnIndex];
dataGridView_List.BeginEdit(false);
}
}