none
DataGridViewでの1行目の反転表示のコントロール RRS feed

  • 質問

  • DataGridViewにてデータ表示後、クリックにて行選択、MsgBoxの確認OKにて処理を続行したいのですが、1行目のみ、2行目以降と反転表示動作が異なるので2行目以降と同じにしたいです。

    ①初期表示時、1行目のみ反転表示しています。⇒DataGridView.Clear.Selectio()のコールで、反転表示はしなくなりました。

    ②クリックでの行選択時、MsgBoxをはさむと、2行目以降は反転表示するのですが、1行目は一瞬反転表示しますが、非反転状態での表示となってしまいます。

     但し、MsgBoxをはさまなければ反転表示します。また、1度でも2行目以降をクリックすると、その後は1行目も2行目以降と同じ動作をするようになります。

     どのような設定を行えば、1行目の動作が2行目以降と同じになるのか、ご教示頂けないでしょうか。

     

     

    2011年7月14日 7:26

回答

  • 反転表示を消しても、CurrentCellが1行目1列目に設定されたままになっているため、最初のクリックで編集モードに入ってしまうのでしょう。
    フォームのActivatedイベントハンドラで、以下のようにしてみて下さい。

    Private firstflg As Boolean = True
    
    Private Sub Form1_Activated(sender As Object, e As EventArgs)
    	If firstflg Then
    		Me.dataGridView1.CurrentCell = Nothing
    		firstflg = False
    	End If
    End Sub
    

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク tmaraym 2011年7月15日 2:39
    2011年7月15日 1:29
    モデレータ

すべての返信

  • 反転表示を消しても、CurrentCellが1行目1列目に設定されたままになっているため、最初のクリックで編集モードに入ってしまうのでしょう。
    フォームのActivatedイベントハンドラで、以下のようにしてみて下さい。

    Private firstflg As Boolean = True
    
    Private Sub Form1_Activated(sender As Object, e As EventArgs)
    	If firstflg Then
    		Me.dataGridView1.CurrentCell = Nothing
    		firstflg = False
    	End If
    End Sub
    

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク tmaraym 2011年7月15日 2:39
    2011年7月15日 1:29
    モデレータ
  • trapemiyaさん ありがとうございました。

    Me.dataGridView1.CurrentCell = Nothing

    にて解決しました。

    尚、ご指摘の編集モードに入ってしまう件につきまして、本画面では編集不要のため、dataGridView1のプロパティのReadOnlyをTrueに変更しましたところ、この変更のみでも希望の動作となりましたのでご報告しておきます。

    2011年7月15日 2:48