為了實現(xiàn)自定義的Menu和ContextMenu效果,可以通過派生ProfessionalColorTable類,在自定義類中通過重寫ProfessionalColorTable類的相關(guān)屬性,產(chǎn)生自定義菜單效果。
公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出北流免費做網(wǎng)站回饋大家。
using System.Drawing; using System.Windows.Forms; public class CustomToolStripColorTable : ProfessionalColorTable { ////// 主菜單項被點擊后,展開的下拉菜單面板的邊框 /// public override Color MenuBorder { get { return Color.FromArgb(37, 37, 37); } } ////// 鼠標移動到菜單項(主菜單及下拉菜單)時,下拉菜單項的邊框 /// 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 ////// 菜單項被選中時的顏色 /// public override Color MenuItemSelected { get { return Color.FromArgb(37, 37, 37); } } #region 下拉菜單面板背景設(shè)置(不包括下拉菜單項) //下拉菜單面板背景一共分為2個部分,左邊為圖像區(qū)域,右側(cè)為文本區(qū)域,需要分別設(shè)置 //ToolStripDropDownBackground設(shè)置文本部分的背景色 public override Color ToolStripDropDownBackground { get { return Color.Black; } } //以ImageMarginGradient開頭的3個設(shè)置的是圖像部分的背景色,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)自定義風(fēng)格的菜單(如:contextMenuStrip1)應(yīng)用如下代碼:
contextMenuStrip1.RenderMode = ToolStripRenderMode.Professional; contextMenuStrip1.Renderer = new ToolStripProfessionalRenderer(new CustomToolStripColorTable());
1.菜單項點擊之后,整個菜單項及下拉菜單項邊框的顏色
publicoverrideColor MenuBorder
{
get
{
returnColor.Red;
}
}
2.鼠標移動到菜單項上,菜單項邊框的顏色(包括下拉菜單項)
publicoverrideColor MenuItemBorder
{
get
{
returnColor.Red;
}
}
3、菜單項被按下時,菜單項背景漸變開始的顏色
publicoverrideColor MenuItemPressedGradientBegin
{
get
{
returnColor.Red;
}
}
4.菜單項被按下時,菜單項背景漸變結(jié)束的顏色
publicoverrideColor MenuItemPressedGradientEnd
{
get
{
returnColor.Red;
}
}
5、下拉菜單被選中的顏色
publicoverrideColor MenuItemSelected
{
get
{
returnColor.Red;
}
}
6、主菜單項被選中(而非按下),漸變開始的顏色
publicoverrideColor MenuItemSelectedGradientBegin
{
get
{
returnColor.Red;
}
}
7、主菜單欄漸變開始的顏色
publicoverrideColor MenuStripGradientBegin
{
get
{
returnColor.Red;
}
}