2017-12-16 9 views
1

これは単純な問題だと思いますが、次のコードスニペットは機能しません。 currnetの行が緑の場合、私はそれが明るい緑色になりたい、そうでなければ私は薄い青色になります。 I MouseLeaveを実行すると、色は元の状態になります。DataGridView行の背景色を変更し、ホバーで元に戻す方法は?

このコードでは、色が何であれ青色になります。マウスを動かすと白くなります。デバッグモード(if文を入力)で正常に動作しているようです。 CellMouseEnterイベントの代わりCellMouseMoveを使用して問題を解決し

private void dtgVeri_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e) 
    { 
     if (e.RowIndex == -1) return; 

     Color colorToChange=Color.LightBlue; 
     Color colorCurrent = dtgVeri.Rows[e.RowIndex].DefaultCellStyle.BackColor; 

     if (colorCurrent == Color.LightGreen) 
      colorToChange = Color.PaleGreen; 

     dtgVeri.Rows[e.RowIndex].DefaultCellStyle.BackColor = colorToChange; 
    } 

    private void dtgVeri_CellMouseLeave(object sender, DataGridViewCellEventArgs e) 
    { 
     if (e.RowIndex == -1) return; 

     Color colorToChange = Color.White; 
     Color colorCurrent = dtgVeri.Rows[e.RowIndex].DefaultCellStyle.BackColor; 

     if (colorCurrent == Color.PaleGreen) 
      colorToChange = Color.LightGreen; 

     dtgVeri.Rows[e.RowIndex].DefaultCellStyle.BackColor = colorToChange; 
    } 
+1

.DefaultCellStyleの代わりに.Styleを試しましたか? .DefaultCellStyleにカスケードプロパティがあるので、テーブル全体が変更される理由が考えられます。 –

+1

@ S.Cassidy **スタイルは**ありませんし、私は別のコードで使用しているとは思わないので、問題はありませんでした。 –

+0

私の悪い、それは行ではなく、セルオブジェクトにのみ適用されます。とにかく、あなたはそれが働いてうれしい。 –

答えて

0

CellMouseMoveは常に問題をチェックして作成していますが、EnterとLeaveで一度ホバーするだけでコントロールが必要です。

+0

私は状況を再現しようとしています。行(またはセル)と行選択の背景にどのような色を使用しましたか? –

+0

あなたの解決策は問題を解決しません –

関連する問題