2016-06-06 5 views
0

Windows Forms 도구를 만들고 여러 항목과 드롭 다운 메뉴가있는 메뉴 조각을 추가했습니다. 그것은 모두 잘 작동하고 드롭 다운 메뉴 항목 "파일"을 선택하면 올바르게 확장됩니다. 커서가 드롭 다운 메뉴 항목에 대한 도구 스트립 메뉴 항목 "파일"을 떠날 때 더 이상 흰색 텍스트를 읽을 수 있도록, 그것은 흰색에 자동으로 색상을 변경합니다 :도구 막대 메뉴 항목이 커서가 활성화 된 항목을 벗어날 때 색상이 변경됩니다.

Unclicked menu strip

Clicked menu strip with mouse cursor on dropdown items

나는 또한 이미 렌더러 정의되도록하기 전에 메뉴 스트립의 색깔 변화와 비슷한 문제가 있었다 :

class BlueRenderer : ToolStripProfessionalRenderer 
{ 
    protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e) 
    { 
     if (!e.Item.Selected) 
     { 
      base.OnRenderMenuItemBackground(e); 
      e.Item.BackColor = Color.MediumBlue; 

     } 
     else 
     {     
      Rectangle rc = new Rectangle(Point.Empty, e.Item.Size); 
      e.Graphics.FillRectangle(Brushes.Blue, rc);     
      e.Graphics.DrawRectangle(Pens.MediumBlue, 1, 0, rc.Width - 2, rc.Height - 1);     
      e.Item.BackColor = Color.MediumBlue; 
      base.OnRenderItemBackground(e); 
      e.Item.BackColor = Color.MediumBlue; 
     } 
    } 
    protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e) 
    { 
     base.OnRenderItemText(e); 
     if (!e.Item.Selected) 
     { 
      e.Item.ForeColor = SystemColors.ControlLightLight; 
     } 
     else 
     { 
      e.Item.ForeColor = SystemColors.ControlLightLight; 
     } 
    } 
} 

내가 렌더러의 다른 재산이나 동작을 변경해야 할 생각을하지만 어느 것을 어떻게 바꾸는 지조차 모릅니다. 마우스 커서가이 요소를 떠날 때 itemcolor를 파란색/중간 파란색으로 유지하는 데 도움이됩니다.

건배

플로리안

답변

0

여러 렌더러 옵션을 시도하여 해결책을 찾았 내 전 "BlueRenderer"를 삭제하고 대신 ProfessionalColorTable를 지정 :

public class ownColorTable : System.Windows.Forms.ProfessionalColorTable 
{ 
    public override Color MenuItemPressedGradientBegin 
    { 
     get 
     { 
      return Color.Blue; 
     } 
    } 

    public override Color MenuItemPressedGradientEnd 
    { 
     get 
     { 
      return Color.Blue; 
     } 
    } 

그럼 난을 initalized ToolStripProfessionalRenderer :

menuStrip1.Renderer = new ToolStripProfessionalRenderer(new ownColorTable());