C#, BindingNavigator, SplitButton, оставшиеся уродливые точки

Нарисуйте панель инструментов в пустой форме. Добавьте SplitButton на эту панель инструментов. Позже будет работать как кнопка входа в систему.

На этом SplitButton я хочу убрать выпадающий список в стартовой позиции. Единственное, что вы можете сделать, это войти в систему. После того, как вы вошли в систему, раскрывающийся список заполняется такими элементами, как "Изменить пароль", "Обновить профиль" и т. Д.

Я попытался поставить имущество:

        loginButton.DropDownButtonWidth = 0;

это почти убирает выпадающий список, он исчез, но это очень уродливая точка справа, которая выглядит как один пиксель слева от выпадающего угла. Смотрите изображения ниже:

SplitButton с DropDown

SplitButton Без DropDown

Я пробовал много других свойств, чтобы удалить раскрывающийся список, но без прогресса. И я не могу найти ничего подобного, когда я Google.

Несколько дней назад я получил отличную справку по устранению другой проблемы с полоской инструментов, у полосы инструментов тоже была проблема с рисованием в состоянии по умолчанию. но удаляется, если вы переопределите метод, см. этот пост:

Проблема рисования полос

Кто-нибудь знает, как я могу удалить некрасивую точку или убрать выпадающий каким-либо другим способом?

Полный исходный код, одна строка по существу с SplitButton с именем loginButton:

using System;

использование System.Windows.Forms;

пространство имен WindowsFormsApp1 {открытый частичный класс Form1: Form {public Form1 () {InitializeComponent (); }

    private void Form1_Load(object sender, EventArgs e)
    {
        loginButton.DropDownButtonWidth = 0;
    }
}

}

1 ответ

Вы можете использовать свой собственный рендер, чтобы попытаться достичь этого:

private class NoArrowRenderer : ToolStripProfessionalRenderer {
  protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e) {
    if (e.Item.GetType() != typeof(ToolStripSplitButton)) {
      base.OnRenderArrow(e);
    }
  }
}

Затем примените его к вашей ToolStrip:

toolStrip1.Renderer = new NoArrowRenderer();
Другие вопросы по тегам