Можно ли изменить фоновое изображение Windows Forms TextBox
на С#? Нет свойства BackgroundImage
. Должен ли я каким-то образом переопределить метод Paint
?
Можно ли установить фоновое изображение в текстовом поле Winforms TextBox?
Ответ 1
Это невозможно. Если вы попробуете переопределить TextBox и вызвать SetStyle (ControlStyles.UserPaint, true) в конструкторе, чтобы вы могли переопределить OnPaintBackground и нарисовать изображение, вы попадете на несколько грубых сюрпризов. Переход к предыдущему режиму рендеринга - только один из них.
TextBox датируется с самых ранних дней Windows, когда он еще должен был работать на аппаратном уровне 386SUX. Одно конкретное преступление, которое он совершает, чтобы разумно работать на таком ограниченном оборудовании, заключалось в том, чтобы использовать себя без использования события WM_PAINT. Это разрушает фоновое изображение.
Там есть проект на CodeProject.com, который обеспечивает его. Я не могу рекомендовать его.
Ответ 2
Если вы используете какое-то собственное кодирование, вы можете попробовать использовать упомянутую здесь технику: http://www.codedblog.com/2007/09/17/owner-drawing-a-windowsforms-textboxудаp > (Изменить: исходная ссылка отсутствует, thnx Zyo, заменил ее ссылкой на архивированную копию в машине обратного пути.)
Хотя статья посвящена рисованию чего-то в текстовом поле после рисования текстового поля (не раньше), возможно, его можно было бы изменить, чтобы выполнить то, что вам нужно.