1

このフォームと、フォームの背景の暗い部分でコントロールの背景をペイントするカスタム関数を作成しました。

ここに画像の説明を入力してください

ホバーすると、コントロールエリアが強調表示されます。この色へのアクセサーはありますか?menustrip.Highlight Colorのように?

ここに画像の説明を入力してください

サブメニューのアクセサーも見つかりませんでした。msdnを調べたところ、テーマ全体を変更する機能に関する記事が見つかりました。色のみで、背景画像の設定方法に関する情報はありません。私はSOを検索し、同様のトピックを見つけましたが、私の質問に答えたり、正しい答えを推定するのに十分近いものはありません。どんな援助も大いに評価されるでしょう。C#で書かれています。また、サブメニューが存在する場合、コントロールのリストに追加されますか?

4

2 に答える 2

2

メニューの外観をカスタマイズするには、ToolStripRenderer を使用する必要があります。レンダラーをメニューに割り当て、invalidate を呼び出します。

menuStrip.Renderer = new ToolStripProfessionalRenderer(new DarkColorTable());
menuStrip.Invalidate();

ご覧のとおり、レンダラーにはカラー テーブルが必要です。カスタム カラーを作成し、カスタマイズするすべての色をオーバーライドする必要があります。

public class DarkColorTable : ProfessionalColorTable
{
    public override Color MenuStripGradientBegin
    {
        get { return Color.FromArgb(128, Color.Black); }
    }

    public override Color MenuStripGradientEnd
    {
        get { return Color.FromArgb(128, Color.Black); }
    }

    public override Color ButtonSelectedHighlight
    {
        get { return Color.FromArgb(64, Color.Black); }
    }

    // etc
}
于 2012-05-10T23:30:30.617 に答える
1
 Private Sub BackImageToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BackImageToolStripMenuItem.Click
 Me.MenuStrip1.BackgroundImage=Form1.My.Resources.Resources.nature 'where nature is image name
    BackImageToolStripMenuItem.Checked = True
End Sub
于 2015-05-28T08:57:51.417 に答える