我需要编写一个比原始winforms文本框更完整的不同文本框。事实上我需要一个不同的背景,我怎样才能实现这一目标?我尝试使用SetStyle(ControlStyles.UserPaint, true);
绘图所有者,但这导致了很多闪烁,文字完全错误绘制,错误的字体,大小等。
我认为,从头开始编写文本框会有点过分。
答案 0 :(得分:2)
这是不可能的。 TextBox类是自Windows版本2以来一直存在的本机Windows控件的包装器。它必须在一些非常糟糕的硬件上运行,它们必须打破一些规则才能使其工作。其中之一是它使用标准的Windows绘制周期绘制了的部分而没有。 Winforms术语中的Invalidate()和OnPaint()。由于app-compat问题,无法修复此行为。过多的代码以创造性但不可预测的方式破解了控制。
因此,无法截取图形以防止其擦除背景图像的部分。没有解决方法,创建自己的工作很多。考虑WPF。
答案 1 :(得分:0)
如果您在文本框中特别需要不同的背景,则可以提供一种解决方法here。