Могу ли я изменить внешний вид Winforms ComboBox, чтобы Combobox с DropDownStyle = DropDownList
выглядел больше похожим на DropDownStyle = DropDown
. Функциональная разница между ними заключается в том, что первая не позволяет вводить введенные пользователем значения, проблема в том, что цветовая схема по умолчанию выглядит серым и не соответствует текстовым полям в том же диалоговом окне.Внешний вид Combobox
ответ
вы можете получить DropDown
вид из DropDownList
стиля, изменив DrawMode
свойство DrawMode.OwnerDrawFixed
и обработки элемента картины самостоятельно (к счастью, это легко). Пример класса, реализующего эту идею:
public class ComboBoxEx : ComboBox
{
public ComboBoxEx()
{
base.DropDownStyle = ComboBoxStyle.DropDownList;
base.DrawMode = DrawMode.OwnerDrawFixed;
}
protected override void OnDrawItem(DrawItemEventArgs e)
{
e.DrawBackground();
if(e.State == DrawItemState.Focus)
e.DrawFocusRectangle();
var index = e.Index;
if(index < 0 || index >= Items.Count) return;
var item = Items[index];
string text = (item == null)?"(null)":item.ToString();
using(var brush = new SolidBrush(e.ForeColor))
{
e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
e.Graphics.DrawString(text, e.Font, brush, e.Bounds);
}
}
}
Вы можете попробовать изменить свойство FlatStyle
и посмотреть, есть ли у вас чем-нибудь по своему вкусу. Если вы действительно хотите, чтобы это выглядело, как это делает с DropDownStyle
набором для DropDown
, вы можете установить DropDownStyle
в DropDown
и есть KeyPress
событие:
private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
Тем не менее, я бы, вероятно, не сделать это как появление ComboBox
является визуальной подсказкой для пользователя, указывающей, должны ли они иметь возможность вводить текстовую область или нет.
По крайней мере, в win7, который только изменяет границу. Внутренняя часть элемента управления остается серым градиентом, подобным фону формы. IIRC в XP разница между двумя стилями капли была гораздо менее драматичной. –
- 1. Изменить внешний вид combobox при фокусировке
- 2. Внешний вид Внешний вид
- 3. внешний вид и внешний вид java
- 4. Внешний внешний вид Java-шлюза
- 5. Какой внешний вид и внешний вид используется ubuntu?
- 6. Как изменить внешний вид или улучшить внешний вид приложения VB.NET?
- 7. Внешний вид и внешний вид на NetBeans 6.5
- 8. Изменить внешний вид Swing
- 9. Открытый внешний вид HTML
- 10. Изменить внешний вид блесны
- 11. Внешний вид RichTextBox
- 12. Внешний вид Php
- 13. Внешний вид Java GUI
- 14. Внешний вид затмения изменился
- 15. Внешний вид конструкции
- 16. Изменить внешний вид сайта
- 17. Ось Внешний вид, matlab
- 18. Внешний вид Sharepoint Ошибка
- 19. Внешний вид навигационной панели
- 20. Внешний вид чисел
- 21. внешний вид в java
- 22. Изменить внешний вид UIStepper
- 23. Внешний вид экрана TableView
- 24. Отрицательный внешний вид
- 25. Внешний вид UITextView
- 26. iOS UIPickerView - Внешний вид
- 27. Настройте внешний вид компонента
- 28. Внешний вид JFreeChart Boxplot
- 29. Внешний вид EditText
- 30. Group Box внешний вид
Интересно. Это то, что вы написали с нуля или вытащили из рамки с помощью отражения? –
Это написано с нуля. На самом деле такое поведение на самом деле не ожидается. Некоторое время назад мне нужно было создать комбинированный блок с индивидуальной живописью элементов и заметил, что изменение свойства DrawMode также влияет на стиль управления, заставляя его «DropDown». – max
+1, @max: очень приятно! –