我可以更改WinForms組合框的外觀,以便與DropDownStyle = DropDownList
看起來更像是一個DropDownStyle = DropDown
。它們之間的功能差異在於前者不允許用戶輸入值,問題在於它的默認顏色方案顯示爲灰色,並且與同一對話框上的文本框不匹配。Combobox外觀
5
A
回答
11
可以通過更改DrawMode
財產DrawMode.OwnerDrawFixed
和自行處理項目的繪畫得到DropDownList
風格DropDown
外觀(謝天謝地,這很容易)。示例類,實現這個想法:
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);
}
}
}
2
您可以嘗試更改FlatStyle
屬性並查看是否有更多符合您的喜好的東西。如果你真的希望它看起來像它與DropDownStyle
設置爲DropDown
,你可以設置DropDownStyle
到DropDown
,吃KeyPress
事件:
private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
不過,我可能無法做到這一點的ComboBox
外觀是用戶的視覺提示,表明他們是否應該能夠輸入文本區域。
+0
至少在win7中只改變邊界。控件的內部仍然是一個類似於窗體背景的灰色漸變。 IIRC在XP中,兩種拖放風格之間的差異並不那麼戲劇化。 – 2010-09-24 18:06:34
相關問題
- 1. RadGrid在編輯時指定ComboBox外觀?
- 2. XP外觀屬性頁的VB6外觀?
- 3. DataGridView中的外鍵Combobox
- 4. Java GUI外觀
- 5. spinner的外觀
- 6. Silverlight Windows外觀
- 7. RadioButton外觀
- 8. JFileChooser的外觀
- 9. 組框外觀
- 10. Flex外觀
- 11. Java JComboBox外觀
- 12. ShareActionProvider外觀
- 13. 菜單外觀
- 14. 外觀數字
- 15. UITabBarItem外觀UIControlStateHighlighted
- 16. UITableViewHeaderFooterView外觀
- 17. -ms-外觀,-0-外觀和外觀在編輯器中顯示爲錯誤。
- 18. 更改UISearchDisplayController外觀
- 19. Richfaces fileupload UI外觀
- 20. 更改外觀2013
- 21. Codename One - TextField外觀
- 22. Laravel緩存外觀
- 23. NavigationBar外觀()(淺色..)
- 24. UITextView外觀延遲
- 25. 變化外觀7
- 26. 導航欄外觀
- 27. 計數外觀數
- 28. Tapestry5按鈕外觀
- 29. 一樣的外觀
- 30. UIButton全球外觀
有趣。那是你從頭開始編寫的東西還是使用反射從框架中拉出來的東西? – 2010-09-24 18:12:36
它是從頭開始編寫的。事實上,這種行爲並不是真正的預期。前一段時間,我需要實現一個帶有自定義項目繪製的組合框,並注意到更改'DrawMode'屬性也會影響控件樣式,並將其強制爲'DropDown'。 – max 2010-09-24 18:17:49
+1,@max:非常好! – 2010-09-24 19:23:55