ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [WinForm - ProfessionalColorTable] Custom MenuStrip
    C# 2021. 10. 29. 13:00

    ProfessionalColorTable 사용하여 WinForm에서 기본 제공되는 Menu 컨트롤의 색상을 변경하는 방법입니다.

     

    1. 비쥬얼 스타일 활성화

     

    Program.cs에 아래 코드를 추가하여 비쥬얼 스타일을 Enable 처리합니다.

     

    Application.EnableVisualStyles();

     

    2. ColorTable 적용

     

    ProfessionalColorTable 상속 받은 CustomProfessionalColorTable Class를 생성 후

     

    필요한 옵션의 프로퍼티를 override 하고 변경하고 싶은 영역을 변경합니다.

     

    public class CustomProfessionalColorTable : ProfessionalColorTable
    {
    	// 재정의 생성을 통해 프로퍼티 override 처리
        
        // 변경하고싶은 영역의 색상을 변경
        public override Color ImageMarginGradientBegin => Color.Purple;
        
        public override Color ImageMarginGradientEnd => base.ImageMarginGradientEnd;
    }

     

    Form.cs를 실행 후 MenuStrip Renderer를 적용시키면 원하는 색상을 적용할 수 있습니다.

    public FrmMain()
    {
    	InitializeComponent();
    	menuStrip1.Renderer = new ToolStripProfessionalRenderer(new CustomProfessionalColorTable());
    }

     


    3. MenuStrip Color 적용 범위

     

    public override Color ImageMarginGradientBegin => Color.Red;
    
    public override Color ImageMarginGradientMiddle => Color.Green;
    
    public override Color ImageMarginGradientEnd => Color.Blue;

     

    public override Color MenuItemSelected => Color.Blue;

     

    public override Color MenuItemBorder => Color.Red;

     

    public override Color MenuBorder => Color.Red;

     

    // 마우스 Hover 색상 
    public override Color MenuItemSelectedGradientBegin => Color.Red;
    
    public override Color MenuItemSelectedGradientEnd => Color.Green;

     

    // 메뉴 선택 시 색상 
    public override Color MenuItemPressedGradientBegin => Color.Red;
    
    public override Color MenuItemPressedGradientMiddle => Color.Green;
    
    public override Color MenuItemPressedGradientEnd => Color.Blue;

     

    public override Color ToolStripDropDownBackground => Color.Red;

     

    // 버튼 프레스 시 변경 색
    public override Color ButtonPressedGradientBegin => Color.Red;
    
    public override Color ButtonPressedGradientMiddle => Color.Green;
    
    public override Color ButtonPressedGradientEnd => Color.Blue;

     

    // 마우스 호버 시
    public override Color ButtonPressedBorder => Color.Yellow;

    댓글

Designed by Tistory.