是否可以在C#中更改Windows窗体TextBox
的背景图像?没有BackgroundImage
属性。我应该以某种方式覆盖Paint
方法吗?
答案 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,将其替换为在返回机器中存档副本的链接。)
虽然文章是关于在之后在文本框中绘制某些内容(而不是之前),但也许可以对其进行修改以完成您的需要。