質問編集履歴

1

追加の疑問を書かせていただきました。

2019/12/05 08:33

投稿

mahry
mahry

スコア37

test CHANGED
File without changes
test CHANGED
@@ -85,3 +85,65 @@
85
85
 
86
86
 
87
87
  上記のようにすると行追加時にCLASSセルに「J3」と出るのですが、当然前行が必ず「J3」になるとも限らないのでダメでした。
88
+
89
+
90
+
91
+ 追加の疑問
92
+
93
+ ---
94
+
95
+ 新規追加した行を削除するとき、
96
+
97
+ ```VB.NET
98
+
99
+ Private Sub DeleteRowsButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DeleteowsButton.Click
100
+
101
+ Try
102
+
103
+ 'DataGridView = mrs
104
+
105
+ Dim ClassData As DataTable = CType(mrs.DataSource, DataTable)
106
+
107
+
108
+
109
+ For i As Integer = 0 To ClassData.Rows.Count - 1
110
+
111
+ 'celCHECKは選択ボックスです。未選択で「0」 選択すると「1」に変わります
112
+
113
+ If ConvertInt32(ClassData.Rows(i)("CHECK")) = 0 Then Continue For
114
+
115
+
116
+
117
+ ClassData.Rows.RemoveAt(i)
118
+
119
+
120
+
121
+ Next
122
+
123
+
124
+
125
+ Catch ex As Exception
126
+
127
+ m_objLogFunc.WriteExceptionLog(ex)
128
+
129
+ Finally
130
+
131
+ '強制的に画面に戻る
132
+
133
+ getMenuBar()
134
+
135
+ End Try
136
+
137
+ End Sub
138
+
139
+ ```
140
+
141
+
142
+
143
+ このように削除処理を入れているのですが、
144
+
145
+ 例えば5行分データがあるとき、3行目(Rows(2))を削除する際に「5行目(Rows(4))に行がない」ということで突き返されてしまいます。
146
+
147
+ 削除後「i -= 1」を入れたらいけるだろうか、と思ったのですがうまくできませんでした。新規行追加と合わせて、もし良いアドバイスがあれば賜りたいと思います。
148
+
149
+ よろしくお願いします。