DataGridView のボタンの文字色を変更するには?

解決


fumofumo  2010-04-22 02:21:56  No: 146838

環境: OS WindowsXP(SP3) , 言語 VB2005 , DB Oralce9i

DataGridView にボタンを追加して
ボタンの文字を 太字&青色にしたいのですが
WindowsのスタイルをXPスタイルにしている
と太字にはなるのですが青色にはなりませんが
クラシックスタイルにすると青色になります。
XPスタイルでも青色にできないでしょうか?

-- コード --
Private Sub DataGridView1_CellPainting(....) Handles DataGridView1.CellPainting
    If e.ColumnIndex >= 0 AndAlso e.RowIndex >= 0 AndAlso _
             (e.PaintParts And DataGridViewPaintParts.Background) = _
                 DataGridViewPaintParts.Background Then
       DataGridView1("0, e.RowIndex).Style..ForeColor = Color.Blue
    End If
End Sub

以上宜しくお願いします。


Hongliang  2010-04-22 03:30:45  No: 146839

VisualStyle ってのはそういうもんなので。
// 例えば、ボタンの背景色に青色を使っているテーマがあったときに、文字色を青色にされてしまっては困りますよね。
DataGridViewButtonCell クラスの解説にも、
> visual スタイルを有効にすると、ボタン列に含まれる各ボタンが、ButtonRenderer を使って描画されます。
> DefaultCellStyle などのプロパティを使って指定されたセル スタイルは無視されます。 
というメモが書かれています。

どうしてもというなら CellPainting イベントで自分で描画することになりますね。
DataGridViewButtonCell クラスはボタンの状態(押下中かとかホバー状態かとか)を公開していないので、自分で判断することになります。DataGridView.HitTest とかでしょうか。スペースやエンターによる押下ってどうやって判断するんだろ。
ボタンの描画自体は、ButtonRenderer にボタンのみでテキストを描画しない描画メソッドがあるので、それを使えばいいでしょう。


fumofumo  2010-04-27 00:09:48  No: 146840

Hongliangさんアドバイスありがとうございます。

返事が遅くなり申し訳ありません。

どうしてもというわけではないので
現状でいきます。

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加