Изменение высоты элемента ComboBox

Как установить высоту элемента combobox? Мой combobox.size = новый размер (320,40), и я установил combobox.itemheight = 18, но это не сработало. Я хочу, чтобы высота элемента или высота текста составляла 18, а фиксированный размер для combobox - 320x40. Я также использовал свойство drawmode, но ничего не происходит.

c#,winforms,

0

Ответов: 2


1 принят

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

myComboBox.DrawMode = DrawMode.OwnerDrawFixed; // or DrawMode.OwnerDrawVariable;
myComboBox.Height = 18; // <- what ever you want

Затем вам нужно реализовать DrawItemсобытие:

private void myComboBox_DrawItem(object sender, DrawItemEventArgs e) {
  ComboBox box = sender as ComboBox;

  if (Object.ReferenceEquals(null, box))
    return;

  e.DrawBackground();

  if (e.Index >= 0) {
    Graphics g = e.Graphics;

    using (Brush brush = ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
                          ? new SolidBrush(SystemColors.Highlight)
                          : new SolidBrush(e.BackColor)) {
      using (Brush textBrush = new SolidBrush(e.ForeColor)) { 
        g.FillRectangle(brush, e.Bounds);

        g.DrawString(box.Items[e.Index].ToString(), 
                     e.Font,
                     textBrush, 
                     e.Bounds, 
                     StringFormat.GenericDefault);
      }
    }
  }

  e.DrawFocusRectangle();
}

Редактирование : чтобы иметь выпадающие растянуто , но не его выпадающий список

   myComboBox.DrawMode = DrawMode.OwnerDrawVariable; 
   myComboBox.Height = 18; // Combobox itself is 18 pixels in height

   ...

   private void myComboBox_MeasureItem(object sender, MeasureItemEventArgs e) {
     e.ItemHeight = 17; // while item is 17 pixels high only
   }

0

Попробуйте изменить размер шрифта в своем поле со списком

C #, WinForms,
Похожие вопросы
Яндекс.Метрика