Подтвердить что ты не робот

Можно ли установить фоновое изображение в текстовом поле Winforms TextBox?

Можно ли изменить фоновое изображение Windows Forms TextBox на С#? Нет свойства BackgroundImage. Должен ли я каким-то образом переопределить метод Paint?

4b9b3361

Ответ 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, заменил ее ссылкой на архивированную копию в машине обратного пути.)

Хотя статья посвящена рисованию чего-то в текстовом поле после рисования текстового поля (не раньше), возможно, его можно было бы изменить, чтобы выполнить то, что вам нужно.