5

MenuStripアプリにを追加し、で追加しManagerRenderModeますRender Mode。問題は外観にあり、内臓を見てください。これらの2つの写真を見てください。サブメニューの白い境界線を透明に、メニューとサブメニューの内臓を濃い灰色(および彼の境界線は濃い青)で内臓に見える青い長方形と白い境界線を変更したいと思います。が選択されたときのメニューの。どうすればこれを行うことができますか?

BackColorは:36; 36; 36ForeColorですLightGray

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

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

青い長方形、オプションを選択したときの白い長方形、サブメニューのオプションを選択したときの青い長方形を変更できましたが、変更方法がわかりませんwhite border。助けてください。

これまでのコードは次のとおりです...

        Color culoare = Color.FromArgb(20, 20, 20);
        Color culoare1 = Color.FromArgb(36, 36, 36);

        public override Color MenuItemSelected
        {
            get { return culoare; }
        }

        public override Color MenuItemBorder
        {
            get { return culoare; }
        }

        public override Color MenuItemSelectedGradientBegin
        { 
            get { return culoare; } 
        }

        public override Color MenuItemSelectedGradientEnd
        { 
            get { return culoare; } 
        }

        public override Color MenuItemPressedGradientBegin
        { 
            get { return culoare; }
        }

        public override Color MenuItemPressedGradientEnd
        {
            get { return culoare; }
        }

        public override Color MenuBorder
        {
            get { return culoare; }
        }
4

2 に答える 2

19

これを行うには、独自のColorTableを作成し、次の色を変更するプロパティをオーバーライドします。

public  class TestColorTable : ProfessionalColorTable
{
    public override Color MenuItemSelected
    {
        get { return Color.Red; }
    }

    public override Color MenuBorder  //added for changing the menu border
    {
        get { return Color.Green; }
    }

}

次のように使用します。

private void Form1_Load(object sender, EventArgs e)
{
    menuStrip1.Renderer = new ToolStripProfessionalRenderer(new TestColorTable());
}
于 2012-11-05T16:17:13.257 に答える
4

あなたのアプローチは正しくありません。フォアカラー/バックカラーを使用してメニューやツールストリップのスタイルを設定することはありません。

ToolStripProfessionalRendererを見てください

これを使用する方法の例

public class MyToolStripRenderer : ToolStripProfessionalRenderer
{
    /* override styling/drawing here */
}

MenuStrip strip = new MenuStrip();

strip.Renderer = new MyToolStripRenderer();

//this will set RenderMode to "Custom"

調査として、CodeProjectでこの例を使用することを検討してください。

さらに良いことに、VBForumにはすでに実装されているものがたくさんあります(通常のLuna、Office、Windows、Visual Studioスタイルで!)

http://www.vbforums.com/showthread.php?596563-100-Customizable-MenuStrip-ToolStrip-StatusStrip-include-common-presets

単に色を変更したい場合は...ポンディダムの答えを使用してください!作業が少なくて済みます。

于 2012-11-05T16:16:39.453 に答える