4

私は autoComplete コンボボックス列を持つバインドされた dataGridView を持っています。

初めてオートコンプリート セルにテキストを入力し、tabKey を使用して次のセルに移動すると、選択内容が保持されず、選択内容がクリアされ、オートコンプリート セルが null のままになります。すぐに左矢印キーを使用してそのオートコンプリート セルに戻り、テキストを入力すると、選択した内容が問題なく保持されます。

したがって、問題は、セルに最初の最初の選択を保持させることです。現在の唯一の回避策は、Tab キーを押して次のセルに移動し、この問題のある autoComplete コンボボックス セルに戻って、全体を入力することです。この時点で、それは機能します。

セルを離れるときに選択したテキストをコミットするために処理する必要があるイベントはありますか?

コード:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        if (e.Control is ComboBox)
        {
                ((ComboBox)e.Control).DropDownStyle = ComboBoxStyle.DropDown;
                ((ComboBox)e.Control).AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
                ((ComboBox)e.Control).AutoCompleteSource = AutoCompleteSource.ListItems;
        }
    }

編集:以下のCellLeaveでは、選択を行った場合でも値がnullとして返されます。

 private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
    {
        var Row = this.dataGridView1.CurrentRow.Index;
        string value = this.dataGridView1["itemID", Row].Value.ToString();
    }
4

2 に答える 2

3

CurrentCellDirtyStateChanged イベントを処理することで問題は解決しましたが、他の問題が発生しないことを願っています!

private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    if (dataGridView1.IsCurrentCellDirty)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}
于 2012-07-17T11:34:06.550 に答える
0

非常に単純に、これは呼び出すことで実行できますnotifycurrentcelldirty event on editingcontrol showing event.

Private Sub dataGridView1_EditingControlShowing(sender As Object, 
                         e As Forms.DataGridViewEditingControlShowingEventArgs) 
                         Handles Me.EditingControlShowing
            dataGridView1.NotifyCurrentCellDirty(True)
End Sub

Private Sub dataGridView1_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles Me.CurrentCellDirtyStateChanged
            If IsCurrentCellDirty = True Then
                CommitEdit(Forms.DataGridViewDataErrorContexts.Commit)
            End If
End Sub
于 2014-12-23T10:26:08.660 に答える