none
DataGridViewのフォーカス移動について RRS feed

  • 質問

  • DataGridViewのフォーカス移動について質問です。

    DataGridViewのデータの入っているセルには普通にフォーカス移動できるのですが新規行にいったときにエラーがでます。

    下記のコードの「」部分でエラーがでます。

    DGVにフォーカス移動できなくするか、新規行を飛ばして次のボタンなどにフォーカス移動などで対応したいのですが教えていただけますでしょうか?

    Private Sub DGV_CellPainting(sender As Object, e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles DGV.CellPainting
            「If e.Value = "AAA" Then」

                e.CellStyle.ForeColor = Color.Cyan

            ElseIf e.Value = "BBB" Then

                e.CellStyle.ForeColor = Color.Green

    End If


     

    2018年3月19日 15:48

回答

  • 多分e.Valueが文字列と比較できない型が入っているのでしょう。

    Private Sub DGV_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles database.CellPainting
    
        If (TypeOf e.Value Is DBNull) Then'たとえばソースがDataTableだとDBNullの場合がある
    
        ElseIf e.Value = "AAA" Then
            e.CellStyle.ForeColor = Color.Cyan
        ElseIf e.Value = "BBB" Then
            e.CellStyle.ForeColor = Color.Green
        End If
    
    End Su

    あるいは

    Private Sub DGV_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles database.CellPainting
    
        If TypeOf e.Value Is String Then '文字列が入っている場合のみ
            If e.Value = "AAA" Then
                e.CellStyle.ForeColor = Color.Cyan
            ElseIf e.Value = "BBB" Then
                e.CellStyle.ForeColor = Color.Green
            End If
        End If
    
    End Sub

    のようにすればエラーにならないでしょう。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク T.K.Tora 2018年3月20日 3:59
    2018年3月19日 22:37

すべての返信

  • 多分e.Valueが文字列と比較できない型が入っているのでしょう。

    Private Sub DGV_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles database.CellPainting
    
        If (TypeOf e.Value Is DBNull) Then'たとえばソースがDataTableだとDBNullの場合がある
    
        ElseIf e.Value = "AAA" Then
            e.CellStyle.ForeColor = Color.Cyan
        ElseIf e.Value = "BBB" Then
            e.CellStyle.ForeColor = Color.Green
        End If
    
    End Su

    あるいは

    Private Sub DGV_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles database.CellPainting
    
        If TypeOf e.Value Is String Then '文字列が入っている場合のみ
            If e.Value = "AAA" Then
                e.CellStyle.ForeColor = Color.Cyan
            ElseIf e.Value = "BBB" Then
                e.CellStyle.ForeColor = Color.Green
            End If
        End If
    
    End Sub

    のようにすればエラーにならないでしょう。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク T.K.Tora 2018年3月20日 3:59
    2018年3月19日 22:37
  • コード使わせていただき、無事に解決できました!

    ありがとうございました。

    2018年3月20日 3:59