c# - 文本框的自定义外观

标签 c# winforms textbox

我需要编写一个与原始 winforms 文本框完全不同的文本框。事实上我需要不同的背景,我怎样才能实现这一点?我尝试使用 SetStyle(ControlStyles.UserPaint, true); 进行所有者绘图,但这会导致大量闪烁,并且文本绘制完全错误,字体、大小等错误。

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

最佳答案

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

因此,无法拦截绘图以防止其删除部分背景图像。对此没有解决方法,创建自己的方法需要大量工作。考虑 WPF。

关于c# - 文本框的自定义外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5332330/

相关文章:

c# - C#中如何显示当前时间和日期

c# - C#中如何判断一个线程是否繁忙?

c# - 如何使用 NumericUpDown 计算文本框值的总数?

wpf - 可以用不同的字体颜色设置TextBox选择的样式吗?

c# - 环绕和大量数据时 TextBox 性能不佳

c# - 使用什么表达式方法来返回参数?

C# 6 getter 和 setter

c# - ASP.NET 页面不应在提交时回发整个页面

c# - 如何使 WHERE 子句中的项目可选?

c# - 使用 Winforms 应用程序分发 Access 数据库