Posso modificare l'aspetto di un ComboBox Winforms in modo che un Combobox con DropDownStyle = DropDownList
assomigli più a uno che sia DropDownStyle = DropDown
. La differenza funzionale tra di loro è che il primo non consente valori inseriti dall'utente, il problema è che la combinazione di colori predefinita appare in grigio e non corrisponde alle caselle di testo nella stessa finestra di dialogo.Aspetto Combobox
risposta
è possibile ottenere DropDown
aspetto da DropDownList
stile modificando DrawMode
proprietà DrawMode.OwnerDrawFixed
spedizione pittura elemento da solo (per fortuna, questo è facile). Esempio di classe, implementando questa idea:
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);
}
}
}
Si potrebbe provare a modificare la proprietà FlatStyle
e vedere se si ottiene qualcosa di più di vostro gradimento. Se si vuole veramente a guardare come fa con DropDownStyle
set per DropDown
, è possibile impostare il DropDownStyle
-DropDown
e mangiare l'evento KeyPress
:
private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
Eppure, non avrei probabilmente fare questo come l'aspetto della ComboBox
è un segnale visivo per l'utente che indica se devono essere in grado di digitare nell'area di testo o meno.
Almeno in win7 che modifica solo il bordo. L'interno del controllo rimane un gradiente grigio simile allo sfondo del modulo. IIRC in XP la differenza tra i due stili di rilascio era molto meno drammatica. –
- 1. Problema di aspetto e aspetto della sostanza Java
- 2. Aspetto aspetto per la specifica di più pacchetti
- 3. Android - Personalizzazione del widget Spinner Aspetto e aspetto
- 4. Combobox borderstyle
- 5. Combobox Vaadin
- 6. ComboBox Behavior
- 7. ComboBox modificabile
- 8. Cambia aspetto UIBarButtonItem globale
- 9. Aspetto negativo python regex
- 10. Cambia aspetto di UIStepper
- 11. Codice Aspetto della firmaJ
- 12. Swift UIImageView Aspetto allungato
- 13. C# ComboBox GotFocus
- 14. ComboBox SelectedValue non mostra
- 15. caso ComboBox discesa sensitive
- 16. JavaFX combobox css styling
- 17. ComboBox di CheckBox?
- 18. WPF ComboBox SelectedItem
- 19. ComboBox SelectedItem vs SelectedValue
- 20. colonna combobox datagrid wpf
- 21. Styling Elementi ComboBox WPF
- 22. associazione combobox wpf
- 23. OwnerDraw ComboBox with VisualStyles
- 24. WPF ComboBox MaxDropDownItems
- 25. WPF Binding Combobox
- 26. Silverlight ComboBox e SelectedItem
- 27. ComboBox WPF predefinito ControlTemplate
- 28. FireFox e AjaxControlToolKit Combobox
- 29. BeanFieldGroup con ComboBox?
- 30. Semantic ui combobox
Interessante. È qualcosa che hai scritto da zero o estratto dal framework usando la riflessione? –
È stato scritto da zero. In realtà, questo comportamento non è realmente previsto. Qualche tempo fa avevo bisogno di implementare una casella combinata con la pittura di oggetti personalizzati e ho notato che la modifica della proprietà 'DrawMode' influenza anche lo stile di controllo, forzandolo a' DropDown'. – max
+1, @max: molto bello! –