web-dev-qa-db-ja.com

ワンクリックでDataGridViewコンボボックスに直接アクセスしますか?

データグリッドビューで行を選択するために1回クリックしてから、その行のコントロール(この場合はコンボボックス)をクリックするためにもう一度クリックすることに悩まされています。

これを2回ではなく1回のマウスクリックで実行できるように構成する方法はありますか?

25
Isaac Bolinger

DataGridViewコントロールのEditModeプロパティを「EditOnEnter」に変更します。ただし、これはすべての列に影響します。

49
Stuart Helwig

ワンクリック編集を特定の列に選択的に適用する場合は、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
Zach Johnson

DataGridViewのEditModeプロパティをに設定することで、コンボボックスをアクティブにし、マウスを1回クリックしてドロップダウンすることができました。 EditOnEnterおよび作成EditingControlShowingイベントと、このイベントのコンボボックスをドロップダウンするコードを追加しました。

詳細については、チェックしてください http://newapputil.blogspot.in/2015/08/add-combo-box-in-cell-of-datagridview.html

0
nvivekgoyal