溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c# Menu和ContextMenu自定義風格簡單實現(xiàn)

發(fā)布時間:2020-06-29 18:42:33 來源:網(wǎng)絡 閱讀:953 作者:tancfeng 欄目:編程語言

為了實現(xiàn)自定義的Menu和ContextMenu效果,可以通過派生ProfessionalColorTable類,在自定義類中通過重寫ProfessionalColorTable類的相關屬性,產(chǎn)生自定義菜單效果。

using System.Drawing;
using System.Windows.Forms;

public class CustomToolStripColorTable : ProfessionalColorTable
{
    /// <summary>
    /// 主菜單項被點擊后,展開的下拉菜單面板的邊框
    /// </summary>
    public override Color MenuBorder
    {
        get
        {
            return Color.FromArgb(37, 37, 37);
        }
    }
    /// <summary>
    /// 鼠標移動到菜單項(主菜單及下拉菜單)時,下拉菜單項的邊框
    /// </summary>
    public override Color MenuItemBorder
    {
        get
        {
            return Color.Transparent;
        }
    }
    #region 頂級菜單被選中背景顏色
    public override Color MenuItemSelectedGradientBegin
    {
        get
        {
            return Color.FromArgb(37, 37, 37);
        }
    }
    public override Color MenuItemSelectedGradientEnd
    {
        get
        {
            return Color.FromArgb(37, 37, 37);
        }
    }
    #endregion
    #region 頂級菜單被按下是,菜單項背景色
    public override Color MenuItemPressedGradientBegin
    {
        get
        {
            return Color.Black;
        }
    }
    public override Color MenuItemPressedGradientMiddle
    {
        get
        {
            return Color.FromArgb(37, 37, 37);
        }
    }
    public override Color MenuItemPressedGradientEnd
    {
        get
        {
            return Color.Black;
        }
    }
    #endregion
    /// <summary>
    /// 菜單項被選中時的顏色
    /// </summary>
    public override Color MenuItemSelected
    {
        get
        {
            return Color.FromArgb(37, 37, 37);
        }
    }
    #region 下拉菜單面板背景設置(不包括下拉菜單項)
    //下拉菜單面板背景一共分為2個部分,左邊為圖像區(qū)域,右側(cè)為文本區(qū)域,需要分別設置
    //ToolStripDropDownBackground設置文本部分的背景色
    public override Color ToolStripDropDownBackground
    {
        get
        {
            return Color.Black;
        }
    }
    //以ImageMarginGradient開頭的3個設置的是圖像部分的背景色,begin->end是從左到右的順序
    public override Color ImageMarginGradientBegin
    {
        get
        {
            return Color.Black;
        }
    }
    public override Color ImageMarginGradientMiddle
    {
        get
        {
            return Color.Black;
        }
    }
    public override Color ImageMarginGradientEnd
    {
        get
        {
            return Color.Black;
        }
    }
    #endregion
}

然后對需要實現(xiàn)自定義風格的菜單(如:contextMenuStrip1)應用如下代碼:

 contextMenuStrip1.RenderMode = ToolStripRenderMode.Professional;
            contextMenuStrip1.Renderer = new ToolStripProfessionalRenderer(new CustomToolStripColorTable());

1.菜單項點擊之后,整個菜單項及下拉菜單項邊框的顏色

       publicoverrideColor MenuBorder

        {

            get

            {

                returnColor.Red;

            }

        }

                             c# Menu和ContextMenu自定義風格簡單實現(xiàn)

2.鼠標移動到菜單項上,菜單項邊框的顏色(包括下拉菜單項)

        publicoverrideColor MenuItemBorder

        {

            get

            {

                returnColor.Red;

            }

        }

  

c# Menu和ContextMenu自定義風格簡單實現(xiàn)

c# Menu和ContextMenu自定義風格簡單實現(xiàn)


3、菜單項被按下時,菜單項背景漸變開始的顏色

        publicoverrideColor MenuItemPressedGradientBegin

        {

            get

            {

                returnColor.Red;

            }

        }

c# Menu和ContextMenu自定義風格簡單實現(xiàn)

4.菜單項被按下時,菜單項背景漸變結(jié)束的顏色

        publicoverrideColor MenuItemPressedGradientEnd

        {

            get

            {

                returnColor.Red;

            }

        }

c# Menu和ContextMenu自定義風格簡單實現(xiàn)

5、下拉菜單被選中的顏色

        publicoverrideColor MenuItemSelected

        {

            get

            {

                returnColor.Red;

            }

        }

c# Menu和ContextMenu自定義風格簡單實現(xiàn)

6、主菜單項被選中(而非按下),漸變開始的顏色

        publicoverrideColor MenuItemSelectedGradientBegin

        {

            get

            {

                returnColor.Red;

            }

        }

c# Menu和ContextMenu自定義風格簡單實現(xiàn)

7、主菜單欄漸變開始的顏色

        publicoverrideColor MenuStripGradientBegin

        {

            get

            {

                returnColor.Red;

            }

        }

c# Menu和ContextMenu自定義風格簡單實現(xiàn)

c# Menu和ContextMenu自定義風格簡單實現(xiàn)

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI