- ベストアンサー
データグリッドビューでの入力値チェックについて
VB2008の環境です。 元々VB6を使用していて1週間前からVB.NETを勉強中です。 現在データグリッドビューを用いてデータを入力できるソフトを作成中です。 編集中の行から移動した時に、移動前の行の入力した項目について、上限値を超えていないか?ブランクではないか?他の行と重複した値になっていないか?などの確認を行いたいと思っています。 上記のチェックの内、他の行との重複チェックを行おうとすると、新規行を追加した時に、新規行に値が入っていないためエラーとなってしまいます。 どなたか行単位のデータチェックで参考になりそうなサンプルソースをご存知ないでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 現在はどのイベントで処理なさっているのでしょうか? 行単位の入力チェックでしたら、RowValidatingイベントで行うと出来ると思います。 新規行は DataGridViewRow.IsNewRow プロパティで判断出来ますので、True の場合はチェックの対象から外されてはいかがでしょうか。 以下は適当に書いたものですが、ご参考になれば。 -------------------------------------------------------- Private Sub DataGridView1_RowValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles DataGridView1.RowValidating Dim dgv As DataGridView = Me.DataGridView1 Dim row As DataGridViewRow = dgv.Rows(e.RowIndex) For Each r As DataGridViewRow In dgv.Rows If Not r.IsNewRow Then If row.Index <> r.Index Then If r.Cells(0).Value.ToString() = row.Cells(0).Value.ToString() Then MessageBox.Show("重複エラー") e.Cancel = True Exit For End If End If End If Next End Sub
お礼
返事が遅くなって申し訳ありません。 RowValidatingイベントまではなんとか自力で見つけたのですが、IsNewRowプロパティまでは探せませんでした。勉強になりました。 VB.NETは、VB6に比べてオブジェクトのカスタマイズの幅が広がっている分、イベントやプロパティが大幅に増えていますね。 覚えるのや調べるのが大変です。