Czy można sformatować element ComboBox w języku C#? Na przykład, w jaki sposób mogę pogrubić przedmiot, zmienić kolor jego tekstu itp.?Zmiana formatu elementu ComboBox
Odpowiedz
Można to zrobić poprzez ustawienie DrawMode do OwnerDrawFixed
który pozwala ręcznie rysować elementy używając zdarzenie DrawItem.
comboBox1.DrawMode = DrawMode.OwnerDrawFixed;
comboBox1.DrawItem += new DrawItemEventHandler(comboBox1_DrawItem);
private void comboBox1_DrawItem(object sender, DrawItemEventArgs e) {
Font font = comboBox1.Font;
Brush brush = Brushes.Black;
string text = comboBox1.Items[e.Index];
if (you want bold)
font = new Font(font, FontStyle.Bold);
if (you want green)
brush = Brushes.Green;
e.Graphics.DrawString(text, font, brush, e.Bounds);
}
Tak, ale z tworzenia własnego ComboBox z niestandardowym rysunku See here on MSDN
Nie, nie ma wbudowanej właściwości, aby to zrobić. Musisz zbudować własną kontrolę i nadpisać renderowanie.
Tak stary, jak ten post, uznałem go za użyteczny jako punkt wyjścia do wyszukiwania, ale zakończył się uzyskaniem lepszych wyników przy użyciu metody pokazanej jako here przez @Paul.
Oto kod, którego użyłem, aby warunkowo sprawić, że elementy w polu kombi wyglądają na pogrubione. Uważam, że odpowiedź oznaczona jako poprawna dla tego pytania ma dziwne zachowanie - po najechaniu kursorem element staje się nieco bardziej wyrazisty i pozostaje taki sam jeśli jest przerysowywany. Ten kod powoduje bardziej naturalny wygląd:
private void ComboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index == -1)
return;
ComboBox combo = ((ComboBox)sender);
using (SolidBrush brush = new SolidBrush(e.ForeColor))
{
Font font = e.Font;
if (/*Condition Specifying That Text Must Be Bold*/)
font = new System.Drawing.Font(font, FontStyle.Bold);
e.DrawBackground();
e.Graphics.DrawString(combo.Items[e.Index].ToString(), font, brush, e.Bounds);
e.DrawFocusRectangle();
}
}
Wystarczy dodać do odpowiedzi dostarczonych przez Dan, nie zapomnij, że jeśli związany listę do DataSource, zamiast tylko o ComboBox z prostych ciągów , nie będzie można przerysować wpisu za pomocą combo.Items[e.Index].ToString()
.
Jeśli na przykład przywiązałeś ComboBox do DataTable i spróbujesz użyć kodu w odpowiedzi Dana, skończysz z ComboBox zawierającym System.Data.DataRowView
, ponieważ każdy element na liście nie jest ciąg, to DataRowView.
Kod w tym przypadku byłoby coś jak poniżej:
private void ComboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index == -1)
return;
ComboBox combo = ((ComboBox)sender);
using (SolidBrush brush = new SolidBrush(e.ForeColor))
{
Font font = e.Font;
DataRowView item = (DataRowView)combo.Items[e.Index];
if (/*Condition Specifying That Text Must Be Bold*/) {
font = new System.Drawing.Font(font, FontStyle.Bold);
}
else {
font = new System.Drawing.Font(font, FontStyle.Regular);
}
e.DrawBackground();
e.Graphics.DrawString(item.Row.Field<String>("DisplayMember"), font, brush, e.Bounds);
e.DrawFocusRectangle();
}
}
Gdzie "DisplayMember"
jest nazwa pola mają być wyświetlane na liście (ustawionej w nieruchomości ComboBox1.DisplayMember
).
- 1. Zmiana koloru podświetlania ComboBox
- 2. Zmiana formatu daty
- 3. Zmiana formatu schematu Mangowego
- 4. zmiana formatu daty w php
- 5. Zmiana formatu daty w R
- 6. SWT Zmiana formatu daty DateTime
- 7. Combobox zmiana koloru podświetlenia winRT (aplikacja metra)
- 8. WPF DataBinding: Anulowana zmiana właściwości - Combobox misaligns
- 9. Ustaw wybrany kolor podświetlenia elementu ComboBox
- 10. Wiązanie elementu ComboBox do ciągu znaków
- 11. Uzyskaj tag wybranego elementu w WPF ComboBox
- 12. Zatrzymaj wyostrzenie kolorów wybranego elementu w ComboBox?
- 13. WPF: Zmiana elementu ItemTemplate w ComboBox usuwa możliwość przeskakiwania listy podczas pisania. Jakikolwiek sposób to naprawić?
- 14. Zmiana formatu daty na "% d /% m /% Y"
- 15. Zmiana formatu arkuszy stylów CSS w Eclipse
- 16. Zmiana formatu daty ciąg w android
- 17. Zmiana formatu automatycznego importu w WebStorm
- 18. R zmiana formatu skali na osi Y
- 19. Combobox ASP.NET AJAX - Nie można programowo zmienić wybranego elementu
- 20. WPF ComboBox z edytowalnym polu tekstowym jako elementu
- 21. Jak wykryć, czy nie wybrano żadnego wybranego elementu w ComboBox?
- 22. Zmiana rozmiaru elementu <video> elementu nadrzędnego div
- 23. Wyczyść tekst zaznaczony ComboBox
- 24. Zmiana wartości aktualnie powtórzyć elementu w liście
- 25. textarea zmiana rozmiaru div elementu nadrzędnego
- 26. zmiana rozmiaru czcionki elementu textview w Androidzie
- 27. Zmiana widoczności elementu okna z podklasy WebView
- 28. Zmiana koloru tekstu elementu rozwijanego Bootstrap
- 29. Zmiana wartości elementu właściwości w PropertyGrid
- 30. Zmiana klasy CSS elementu na starcie