Arhn - архитектура программирования

Проверка, заполнено ли многострочное текстовое поле

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

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

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


Ответы:


1

Проблема заключается в вашем третьем требовании:

The extended TextBox may have different fonts and font sizes. 

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

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

26.06.2009
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..