Можно ли установить фоновое изображение в текстовом поле Winforms? - PullRequest
20 голосов
/ 05 декабря 2010

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

Ответы [ 2 ]

32 голосов
/ 05 декабря 2010

Это невозможно.Если вы попытаетесь переопределить TextBox и вызвать SetStyle (ControlStyles.UserPaint, true) в конструкторе, чтобы вы могли переопределить OnPaintBackground и нарисовать изображение, вас ждет несколько грубых сюрпризов.Возврат к традиционному режиму рендеринга - это только один из них.

TextBox относится к самым ранним временам Windows, еще тогда, когда он все еще должен был работать на оборудовании 386SUX.Одно конкретное преступление, которое оно обязывает разумно работать на таком ограниченном оборудовании, - рисовать себя без использования события WM_PAINT.Это разрушает фоновое изображение.

На CodeProject.com есть проект, который его предоставляет.Я не могу рекомендовать это.

2 голосов
/ 07 апреля 2011

Если вы до какой-то нативной кодировки, вы можете попробовать использовать метод, упомянутый здесь: http://www.codedblog.com/2007/09/17/owner-drawing-a-windowsforms-textbox (Изменить: исходная ссылка не работает, спасибо Zyo, заменил ее ссылкой на архивную копию на машине обратного хода.)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...