2009-12-16 6 views

ответ

42

Это ошибка в «системном» рендерере, подробности в this bug report.

ответ Microsoft дает очень простой обходной путь:

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/и т.д.. (Так как в наследстве от ToolStrip, он начинает же использование пользовательской рендерер автоматически):

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

Пропущенного ToolStripDropDownMenu границы не так заметна при использовании ToolStripSystemRenderer, но становится реальным уродством с ToolStripProfessionalRenderer.

Кроме того, установка System.Windows.Forms.ToolStripManager.Renderer = new MySR(); может быть полезна, если вы хотите, чтобы все ToolStrip экземпляров appwide использовали MySR по умолчанию.

 Смежные вопросы

  • Нет связанных вопросов^_^