1.前言
使用该功能时,发现点击下拉选项需要三次,而且选择完,还要点击其他单元格才能提交,可以说用户体验性极差.
本人经过摸索,改善了以上体验.
2.效果
点击一次立马弹出下拉框,且提交后立马结束编辑状态.
3.实现代码
private void dgv_table_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex >= 0 && !dgv_table.ReadOnly)
{
DataGridViewComboBoxColumn combo = dgv_table.Columns[e.ColumnIndex] as DataGridViewComboBoxColumn;
if (combo != null) //如果该列是ComboBox列
{
dgv_table.BeginEdit(false); //结束该列的编辑状态
DataGridViewComboBoxEditingControl comboEdite = dgv_table.EditingControl as DataGridViewComboBoxEditingControl;
if (comboEdite != null)
{
comboEdite.DroppedDown = true; //展现下拉列表
}
}
//DataGridViewTextBoxColumn textbox = dgv_table.Columns[e.ColumnIndex] as DataGridViewTextBoxColumn;
//if (textbox != null) //如果该列是TextBox列
//{
// dgv_table.BeginEdit(true); //开始编辑状态
//}
}
}
private void dgv_table_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dgv_table.IsCurrentCellDirty)
{
dgv_table.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
private void dgv_table_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (dgv_table.CurrentCell!=null)
{
int row = dgv_table.CurrentRow.Index;
int col = dgv_table.CurrentCell.ColumnIndex;
if (col == 9)//审批
{
objUpdate.UpdataDataSP(dgv_table.Rows[row].Cells[0].Value.ToString(), dgv_table.CurrentCell.Value.ToString());
dgv_table.EndEdit();
}
}
}
备忘:针对某一列做操作
private void dgv_table_CellContentClick_1(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0)
{
return;
}
if (e.ColumnIndex == 7)
{
list_SM.Items.Clear();
QuerySMInfo(dgv_table.Rows[e.RowIndex].Cells[0].Value.ToString());
}
}