Кнопка раскрывающегося списка панели инструментов недостаточно велика

Что ж, ответы от stackoverflow выглядели многообещающе, но пока не повезло. Кроме того, у меня может не хватить опыта, чтобы увидеть это.

Просто я подумал: я ищу большую стрелку раскрывающегося списка в ToolStripDropDownButton как элемент в коллекции. Кнопка раскрывающегося списка на панели инструментов очень маленькая. Я хотел бы, чтобы он был в 3 раза больше текущего размера. Небольшой размер тоже будет полезен. Выпадающий список, если он выбран, показывает меню элементов.

Можно ли использовать ToolStripRenderer или пользовательский элемент управления, чтобы получить это по желанию (если нет свойства, которое я не вижу) или ?? Я не так хорошо знаком с пользовательскими элементами управления в среде Winforms, поэтому любая помощь с фрагментами или указаниями будет полезна. Другими словами, интересно, нужен ли пользовательский элемент управления, что мне нужно, чтобы заставить его работать в этом сценарии? Тем не менее, я ищу любое решение, которое будет работать. Спасибо за любую помощь/идеи!!!!


person Buck    schedule 11.04.2014    source источник
comment
Это очень необычный запрос, который обычно означает проблему XY. Вы понимаете, что это всего лишь визуальная подсказка, и вам не нужно щелкать стрелку, чтобы открыть раскрывающийся список? Есть целая кнопочка, на которую можно нажать.   -  person Hans Passant    schedule 11.04.2014
comment
Привет Ганс и спасибо за хороший комментарий. Но кнопка такая маленькая. Напрашивается покрупнее (моё мнение и тут же независимо высказанное по результатам тестирования). Кроме того, знание того, что вы можете щелкнуть всю кнопку, может потребовать ментального разыменования пользователя (увидеть стрелку и перевести ее в возможность нажать кнопку, а не только стрелку). Еще раз спасибо. Ты делаешь доброе дело.   -  person Buck    schedule 14.04.2014


Ответы (2)


Попробуйте создать свой собственный Renderer и переопределите метод OnRenderArrow:

public class MyRenderer : ToolStripProfessionalRenderer {
  protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e) {    
    if (e.Item.GetType() == typeof(ToolStripDropDownButton)) {
      Rectangle r = e.ArrowRectangle;
      List<Point> points = new List<Point>();
      points.Add(new Point(r.Left - 2, r.Height / 2 - 3));
      points.Add(new Point(r.Right + 2, r.Height / 2 - 3));
      points.Add(new Point(r.Left + (r.Width / 2),
                           r.Height / 2 + 3));
      e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
      e.Graphics.FillPolygon(Brushes.Black, points.ToArray());
    } else {
      base.OnRenderArrow(e);
    }
  }
}

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

toolStrip1.Renderer = new MyRenderer();

Возможно, вам придется изменить свойство AutoSize кнопки на false и установить ширину кнопки самостоятельно, чтобы получить нужное пространство.

введите здесь описание изображения

person LarsTech    schedule 11.04.2014
comment
Это выглядит идеально! Спасибо. У меня случился программный кризис. Я проверю в эти выходные и отмечу как решение. Еще раз спасибо. Это выглядит фантастически!!!!!!! - person Buck; 12.04.2014
comment
Прекрасная работа. Еще раз спасибо!! - person Buck; 14.04.2014

Вы можете изменить размер кнопки, установив для свойства AutoSize значение false, а затем задав для свойства Size то, что вам нужно. Что касается увеличения стрелки, я не думаю, что вы можете это сделать, но, по крайней мере, это сделает кнопку больше.

person rory.ap    schedule 11.04.2014
comment
Спасибо за ответ! Это может помочь кому-то с кнопкой. - person Buck; 14.04.2014