2009-12-16 4 views

답변

42

"시스템"렌더러의 버그입니다 (세부 사항은 this bug report입니다).

1), ToolStripSystemRenderer의 서브 클래스를 작성 OnRenderToolStripBorder을 무시하고 그것을 어떤 조합 만들기 없습니다 :

public class MySR : ToolStripSystemRenderer 
{ 
    public MySR() { } 

    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e) 
    { 
     //base.OnRenderToolStripBorder(e); 
    } 
} 

2) ToolStrip에 대한 그 렌더러를 사용을

는 마이크로 소프트의 반응은 아주 쉬운 해결 방법을 제공합니다 :

toolStrip3.Renderer = new MySR(); 
+8

+1,하지만 실제로 대답을 수정했습니다. * 답변을 가리키기보다는 답변을 포함시킵니다. StackOverflow가 독립적이어야하며 외부 링크가 손상 될 수 있습니다. 그들은 훌륭한 부속물을 만들지 만, 주요 내용은 SO 그 자체에 있어야합니다. –

+0

왜 응용 프로그램이 종료됩니까? – RickInWestPalmBeach

8

테두리가 누락되지 않도록하려면 유형 체크를 추가 할 수 있습니다. ToolStripDropDownMenu/etc. (ToolStrip에서 상속하기 때문에, 자동으로 같은 사용자 정의 렌더러 사용을 시작) : ToolStripSystemRenderer를 사용하지만 ToolStripProfessionalRenderer과 실제 눈에 거슬리는 될 때

protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e) 
{ 
    if (e.ToolStrip.GetType() == typeof(ToolStrip)) 
    { 
     // skip render border 
    } 
    else 
    { 
     // do render border 
     base.OnRenderToolStripBorder(e); 
    } 
} 

부재 ToolStripDropDownMenu 국경이 너무 눈에 띄는되지 않습니다.

또한 을 설정하면 모든 ToolStrip 인스턴스를 기본값으로 MySR을 사용하도록 설정할 수 있습니다.