|
■No53965 (すなふきぬ さん) に返信 > ■No53962 (半角カナ さん) に返信 > >>表示までは出来ており、チェックされていないチェックボックスを選択した場合 >>セルのイベントが呼び出されると思いますが、その際にチェックした値を取得したいのですが、チェックする前の値を取得してしまいます。 >> >>■(1) □(0)→チェックした場合、1をデータとして取得したいのですが、 >>可能でしょうか? >> >>dataGridView1.SelectedCells[0].Value;では出来ませんでした…。 > > DataGridViewでチェックボックス列を扱う場合は、CurrentCellDirtyStateChangedイベント内でチェック状態を確定してあげるとよいと思います。 > > VBのソースですいませんが、DataGridViewを継承したクラスを作成した時に似たような処理をしていたので載せておきます。 > > > ''' <summary> > ''' チェックボックスの値が変更された場合は、即時反映する > ''' </summary> > ''' <param name="sender"></param> > ''' <param name="e"></param> > ''' <remarks></remarks> > Private Sub DataGridViewEx_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.CurrentCellDirtyStateChanged > 'データ変更がキャッシュに残っている場合 > If Me.IsCurrentCellDirty Then > 'イベント対象はチェックボックス列のみ > If TypeOf Me.Columns(Me.CurrentCell.ColumnIndex) Is DataGridViewCheckBoxColumn Then > '即時反映 > Me.CommitEdit(DataGridViewDataErrorContexts.Commit) > 'チェックボックス値変更イベントの発火 > RaiseEvent CellCheckChanged(Me, New DataGridViewCellEventArgs(Me.CurrentCell.ColumnIndex, Me.CurrentCell.RowIndex)) > End If > End If > End Sub >
>>すなふきぬ さん
ソースまで教えて頂きありがとうございます。 DataGridViewEx_CurrentCellDirtyStateChangedを調べた所、cC#,VBもやり方が載っているサイトがありました。 教えて頂いたソースとサイトを参考にやってみます。教えて頂き有難うございました。
|