これは単純な問題だと思いますが、次のコードスニペットは機能しません。 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;
}
.DefaultCellStyleの代わりに.Styleを試しましたか? .DefaultCellStyleにカスケードプロパティがあるので、テーブル全体が変更される理由が考えられます。 –
@ S.Cassidy **スタイルは**ありませんし、私は別のコードで使用しているとは思わないので、問題はありませんでした。 –
私の悪い、それは行ではなく、セルオブジェクトにのみ適用されます。とにかく、あなたはそれが働いてうれしい。 –