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

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

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

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

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

如果您需要一些本机编码,您可以尝试使用此处提到的技术: http//www.codedblog.com/2007/09/17/owner-drawing-a-windowsforms-textbox (编辑:原始链接已经失败了,thnx Zyo,用替换机器中的归档副本替换它。)

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