DataGridViewComboBoxColumn下拉体验改善

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());
            }
        }

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值