Нарисуйте границу TextBox как в Vista / 7 - PullRequest
1 голос
/ 07 февраля 2012

В Windows.Forms мне не удалось воспроизвести ту же границу TextBox, как вы видите это в Vista / 7 Aero.Все, что я получаю, это серый прямоугольник вместо слегка затонувшей серо-синей 3d-рамки.Я попробовал следующие методы безуспешно:

  • Класс VisualStyleRenderer
  • Класс TextBoxRenderer
  • Control.DrawToBitmap ()
  • P / Invoke with UxThemeи друзья
  • Рисование элементов RichTextBox вместо элементов TextBox

Эта проблема уже обсуждалась здесь, но без решения: http://social.msdn.microsoft.com/Forums/hu-HU/winforms/thread/46e66852-b52e-420d-8fe0-b717f86ecb18

Похоже, что неточевидное решение этой проблемы.Кто-нибудь знает, как нарисовать ту же границу, что и в Aero?

1 Ответ

1 голос
/ 08 февраля 2012

Это, вероятно, не произойдет для вас.

Я думаю, VisualStyleRenderer, включая TextBoxRenderer, больше предназначались для тем XP.

Даже функция Control.DrawToBitmap(...) волшебным образом рисует версию, отличную от той, что отображается на экране.

У меня нет канонического ответа на этот вопрос, но, скорее всего, это результат Microsoftпереходя к WPF и оставляя позади элементы управления WinForm с этими визуальными темами наполовину.

Единственный ответ на этот вопрос - использовать WPF или использовать стороннюю систему, такую ​​как DevExpress (которая поддерживает пользовательские темы), если вынужно "тема" всех ваших элементов управления.

...