C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■88633 / )  DataGridViewの不正値チェック
□投稿者/ まっさん (6回)-(2018/09/12(Wed) 13:43:46)

分類:[VB.NET/VB2005 以降] 

環境:VB2010 Windowsフォームアプリ

以下のような事を実現したいのですが、
    (1)DataGridViewにユーザーが不正な値を入力した場合はエラーアイコンを表示
    (2)セルの値が不正でなくなったら、エラーアイコンを消去

DataErrorをハンドリングして以下のようなコードで実験してみましたが、
もう一工夫したい点がいくつかあります。
(下記コードでDataGridViewのC1列にInteger以外を入力した場合の話です。)

    (a)ESCキー押下で入力をキャンセルした場合、エラーアイコンが消えない。
    (b)不正な値を入力してEnterキー押下で不正文字を選択状態にしたい。
    (c)エラーアイコンを行ヘッダに表示しているが、できればセルに表示したい。

    (c)は無理っぽい感じがしますが、上記を実現するにはどうすればいいでしょうか?

’-----------------------以下、実験コード-----------------------
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim dt As New DataTable
        dt.Columns.Add("C1", GetType(Integer))
        dt.Rows.Add(1)
        dt.AcceptChanges()
        DataGridView1.DataSource = dt
    End Sub
    Private Sub DataGridView1_DataError(sender As Object, e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError
        DataGridView1.Rows(e.RowIndex).ErrorText = "セルの値を確認してください。"
        e.Cancel = True
    End Sub
    Private Sub DataGridView1_CellValidating(sender As Object, e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating
        If DataGridView1.Rows(e.RowIndex).ErrorText IsNot String.Empty Then
            DataGridView1.Rows(e.RowIndex).ErrorText = String.Empty
        End If
    End Sub

返信 編集キー/


管理者用

- Child Tree -