Проверка, является ли многострочное текстовое поле видимым - PullRequest
0 голосов
/ 26 июня 2009

Я пытаюсь сделать свой собственный контроль для .NET с помощью VB, и у меня возникают проблемы с достижением того, что я хочу сделать. Фактически, я делаю элемент управления, который наследуется от класса textbox, и единственное изменение, которое я пытаюсь внести в него, заключается в том, что если элемент управления визуально заполнен, пользователь больше не может печатать. Итак:

  • Полосы прокрутки никогда не должны появляться.
  • Расширенный TextBox может быть многострочным или однострочным.
  • Расширенный TextBox может иметь разные шрифты и размеры шрифтов.

Прямо сейчас, я использую технику - graphics.measurestring, чтобы получить sizeF, содержащий ширину и высоту моей строки, чтобы сравнить ее с высотой и шириной моего элемента управления textbox. Все это в событии KeyDown (я не знаю, что это лучшее решение). Я могу заставить его работать нормально для ширины, но я не могу получить высоту прямо в многострочном текстовом поле. Если кто-нибудь когда-нибудь работал с этим материалом, мне нужно было бы объяснить, как это сделать. Спасибо.

1 Ответ

0 голосов
/ 26 июня 2009

Проблема в вашем третьем требовании:

The extended TextBox may have different fonts and font sizes. 

Это означает, что вам нужно будет выяснить, какова высота каждой строки, на которую символы в строке имеют наибольший размер шрифта, и чтобы знать, вам также необходимо знать, какие символы в каждой строке. Это ухудшается, потому что (на удивление) разные шрифты могут иметь разную высоту при одинаковом размере точек. Это все может быть работоспособным, если бы не тот факт, что каждый символ в пропорционально разнесенном шрифте имеет разную ширину.

А если вы намереваетесь поддерживать индексы и индексы ...

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