2011-11-07 4 views
4

런타임시 도구 스트립 레이블과 뒷면 색상이 변경되어야합니다. 백 컬러를 변경하는 옵션을 제공하더라도 백 컬러를 변경하지 않습니다. 그 이유는 무엇이며 런타임 또는 디자인 타임 중에 백 색 속성을 변경하려면 어떻게해야합니까? 이 ToolStrip에의 RenderMode 설정에 의해 영향을디자인 타임이나 런타임에 toolstriplabel의 backcolor 속성이 변경되지 않는 이유는 무엇입니까?

답변

7

사전에

감사합니다. 시스템으로 변경 한 경우에만 BackColor 속성이 적용됩니다. 다른 렌더러는 테마 색상을 사용합니다. 아마 System을 좋아하지는 않을 것입니다 만, 자신 만의 렌더러를 구현하여 케이크를 먹거나 먹을 수도 있습니다. 다음과 같이 보이게하십시오 :

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     this.toolStrip1.Renderer = new MyRenderer(); 
    } 
    private class MyRenderer : ToolStripProfessionalRenderer { 
     protected override void OnRenderLabelBackground(ToolStripItemRenderEventArgs e) { 
      using (var brush = new SolidBrush(e.Item.BackColor)) { 
       e.Graphics.FillRectangle(brush, new Rectangle(Point.Empty, e.Item.Size)); 
      } 
     } 
    } 
}