可以在Winforms TextBox上设置背景图像吗?

时间:2010-12-05 18:04:03

标签: c# winforms textbox background-image

是否可以在C#中更改Windows窗体TextBox的背景图像?没有BackgroundImage属性。我应该以某种方式覆盖Paint方法吗?

2 个答案:

答案 0 :(得分:31)

这是不可能的。如果您尝试重写TextBox并在构造函数中调用SetStyle(ControlStyles.UserPaint,true),以便您可以覆盖OnPaintBackground并绘制图像,那么您将会遇到几个粗鲁的意外。回归传统渲染模式只是其中之一。

TextBox可以追溯到Windows的早期阶段,当时它仍然必须在386SUX硬件上运行。它承诺在这种有限的硬件上合理地工作的一个特殊罪行是在不使用WM_PAINT事件的情况下绘制自己。这会破坏背景图像。

CodeProject.com上有一个提供一个项目。我不能推荐它。

答案 1 :(得分:2)

如果你需要一些本机编码,你可以尝试使用这里提到的技术: http://www.codedblog.com/2007/09/17/owner-drawing-a-windowsforms-textbox (编辑:原始链接已关闭,thnx Zyo,将其替换为在返回机器中存档副本的链接。)

虽然文章是关于在之后在文本框中绘制某些内容(而不是之前),但也许可以对其进行修改以完成您的需要。