一键直接访问DataGridView组合框?

时间:2010-08-10 00:01:07

标签: c# datagridview

点击一次在datagridview中选择一行,然后再次单击以点击该行中的控件(在本例中为组合框),我感到很恼火。

有没有办法配置这个东西,以便所有这一切都可以通过一次鼠标点击而不是两次?

3 个答案:

答案 0 :(得分:48)

将DataGridView控件的EditMode属性更改为“EditOnEnter”。这会影响所有列。

答案 1 :(得分:2)

如果要有选择地将单击编辑应用于某些列,可以在MouseDown事件期间切换当前单元格以消除要编辑的单击:

// Subscribe to DataGridView.MouseDown when convenient
this.dataGridView.MouseDown += this.HandleDataGridViewMouseDown;

private void HandleDataGridViewMouseDown(object sender, MouseEventArgs e)
{
    // See where the click is occurring
    DataGridView.HitTestInfo info = this.dataGridView.HitTest(e.X, e.Y);

    if (info.Type == DataGridViewHitTestType.Cell)
    {
        switch (info.ColumnIndex)
        {
            // Add and remove case statements as necessary depending on
            // which columns have ComboBoxes in them.

            case 1: // Column index 1
            case 2: // Column index 2
                this.dataGridView.CurrentCell =
                    this.dataGridView.Rows[info.RowIndex].Cells[info.ColumnIndex];
                break;
            default:
                break;
        }
    }
}

当然,如果您的列及其索引是动态的,则需要稍微修改一下。

答案 2 :(得分:0)

通过将DataGridView的 EditMode 属性设置为 EditOnEnter 并创建 EditingControlShowing 事件和添加的代码以在此事件中下拉组合框。

有关详细信息,请查看 - http://newapputil.blogspot.in/2015/08/add-combo-box-in-cell-of-datagridview.html