|
分類:[VB.NET/VB2005 以降]
お世話になります。
現在VB2008にて、開発を行っているのですが、ComboBoxColumnを含むDataGridViewがあり、「1.2.3」の三つの数字をアイテムにしています。
そこで、三つの数字のうち、「2」を選択すると、選択した行の指定したCellの文字列を消し、Nullの状態にしたいんです。
まず、DataGridVoewのComboBoxColumnに対し、SelectedIndexChangedのイベントを補足しています。
こちらがそのソースです。
Privete Sub DataGridView_SelectedIndexChanged(Byal Sender 〜
'ComboBoxのCellの値が変更された場合の処理。
Dim roe As Integer
Dim col As Integer
Dim str As String = ""
roe = DataGridView1.CurrentCell.RowIndex
col = DataGridView1.CurrentCell.ColumnIndex
'変更後の値を取得する。
Try
str = Me.DataGridView1.CurrentCell.GetEditedFormttedValue(row, col)
Catch ex As NullReferenceException
End Try
'ComboBoxの値が2に変更された場合の処理
If str = 2 Then
'値の変更を確定する
Me.DataGridView1.EndEdit()
Division_Changed(str, row, col)
End If
End Sub
という内容です。
ComboBoxの値が変更されたら、Division_Changeのイベントを行い、そこで選択された行のCellをNullにするという動作を行います。
Private Sub Division_Changed(ByVal str As String, ByVal row As Integer, ByVal col As Integer)
'strの値が2であれば選択されている行のCellの値をNullにします。
If str = 2 Then
Me.DataGridView1.Rows(row).Cells(6).Value = ""
Me.DataGridView1.Rows(row).Cells(7).Value = ""
Me.DataGridView1.Rows(row).Cells(8).Value = ""
End If
End Sub
という形です。
ここで皆さんにお聞きしたいことは、Division_ChangedのイベントでNullを指定しているのですが、なぜか値が変更されていないんです。
デバックをして確かめたりもしたのですが、エラーも出ず、問題なくDivision_Changedのイベントは通っています。
元々、NullにしようとしているCellには数値の値が格納されています。
そこで、Nullではなく、0を指定すると、問題なく値がすべて0となりました。
私は「""」で値を消すようにしているのですが、他に何か方法がありましたら、ご教授ください。
よろしくお願いします。
|