在C#中,是否可以更改Windows Forms TextBox
的背景图像?因为它没有BackgroundImage
属性。我应该以某种方式重写Paint
方法吗?
在C#中,是否可以更改Windows Forms TextBox
的背景图像?因为它没有BackgroundImage
属性。我应该以某种方式重写Paint
方法吗?
这是不可能的。如果您尝试通过覆盖TextBox并在构造函数中调用SetStyle(ControlStyles.UserPaint, true)以便覆盖OnPaintBackground并绘制图像,则会遇到几个问题。其中之一就是退回到传统呈现模式。
TextBox来自Windows非常早期的时代,那时它仍然必须在386SUX硬件上运行。为了在如此有限的硬件上合理工作,它所犯的一个特定的错误是在不使用WM_PAINT事件的情况下绘制自己。这会破坏背景图像。
CodeProject.com有一个提供此功能的项目,但我不能推荐它。
UserControl
,在其上方放置一个透明的RichTextBox
。要实现透明的RichTextBox
,请复制Hans Passant的代码,但继承自RichTextBox
而不是Label
。请注意,继承自TextBox
将无法使用此技巧。可能有比这更简洁的方式为RichTextBox
添加背景图片;它是比TextBox
更强大的控件。 - Brian