文本框的自定义外观

时间:2011-03-16 21:55:54

标签: c# winforms textbox

我需要编写一个比原始winforms文本框更完整的不同文本框。事实上我需要一个不同的背景,我怎样才能实现这一目标?我尝试使用SetStyle(ControlStyles.UserPaint, true);绘图所有者,但这导致了很多闪烁,文字完全错误绘制,错误的字体,大小等。

我认为,从头开始编写文本框会有点过分。

2 个答案:

答案 0 :(得分:2)

这是不可能的。 TextBox类是自Windows版本2以来一直存在的本机Windows控件的包装器。它必须在一些非常糟糕的硬件上运行,它们必须打破一些规则才能使其工作。其中之一是它使用标准的Windows绘制周期绘制了的部分而没有。 Winforms术语中的Invalidate()和OnPaint()。由于app-compat问题,无法修复此行为。过多的代码以创造性但不可预测的方式破解了控制。

因此,无法截取图形以防止其擦除背景图像的部分。没有解决方法,创建自己的工作很多。考虑WPF。

答案 1 :(得分:0)

如果您在文本框中特别需要不同的背景,则可以提供一种解决方法here