Q
組合框邊框
5
A
回答
6
13
創建自定義組合框控件,並覆蓋它的方法WndProc
。你可以很容易得出一個邊境ControlPaint.DrawBorder方法:
public class ComboBoxWithBorder : ComboBox
{
private Color _borderColor = Color.Black;
private ButtonBorderStyle _borderStyle = ButtonBorderStyle.Solid;
private static int WM_PAINT = 0x000F;
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == WM_PAINT)
{
Graphics g = Graphics.FromHwnd(Handle);
Rectangle bounds = new Rectangle(0, 0, Width, Height);
ControlPaint.DrawBorder(g, bounds, _borderColor, _borderStyle);
}
}
[Category("Appearance")]
public Color BorderColor
{
get { return _borderColor; }
set
{
_borderColor = value;
Invalidate(); // causes control to be redrawn
}
}
[Category("Appearance")]
public ButtonBorderStyle BorderStyle
{
get { return _borderStyle; }
set
{
_borderStyle = value;
Invalidate();
}
}
}
順便說一句另外也重載DrawBorder方法,它允許設置邊框的寬度。如果您需要,請使用它。
+1
這是否工作? ComboBox邊框不能在繪畫事件中被覆蓋。我認爲你必須重載WndProc並尋找非客戶端的paint消息。當然,它會閃爍相當難看。 – LarsTech
+2
在發佈之前嘗試一下代碼。 –
+0
@LarsTech你是對的,我的壞,修復 –
相關問題
- 1. 輪組合框的邊框
- 2. IE7中組合框的白色邊框
- 3. 更改組合框邊框顏色
- 4. Flex組合框 - 刪除邊框
- 5. 組邊框
- 6. 合併底邊框
- 7. 爲組合ggplots添加共同邊框
- 8. SWT組合邊框消除器
- 9. 組合框到另一個組合框
- 10. 篩選組合框其他組合框
- 11. 將組合框綁定到組合框
- 12. 將組合框綁定到組合框
- 13. 自定義組合框,組合框
- 14. 如何添加邊框,這些2個組合框
- 15. 在wpf c中更改組合框的邊框#
- 16. 刪除焦點組合框項目的虛線邊框
- 17. 更改WPF組合框的邊框顏色
- 18. 組合框和文本框?
- 19. 組合框與複選框
- 20. C#WPF組合框與文本框作爲作爲組合框
- 21. 基於組合框填充文本框和組合框 - Winforms
- 22. 組合框
- 23. 從組合框
- 24. 從組合框
- 25. DataGridView組合框
- 26. 在組合框
- 27. 與組合框
- 28. 組合框中
- 29. DataGridView組合框
- 30. Silverlight組合框
控制的母公司可以在它的Paint事件處理程序周圍畫一個邊框。 –