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事件处理程序周围画一个边框。 –