2012-05-30 5 views
2

У меня проблема с textbox, когда набирается огромная строка.Текстовое поле отключено с помощью огромной строки

В моем случае текстовое поле используется для написания адресов электронной почты, и оно не имеет предела символов. Итак, я сделал этот тест: я написал 200 электронных адресов в блокноте, и я вставил текст на textbox, и текст исчез, но если я изменил фокус элемента управления, текст снова отобразится. Я уже видел это link, но это мне не помогло. Я уже пытался изменить свойство MaxLength на 0 (how the microsoft says to do), но он тоже не работает.

Учитывая адрес электронной почты с 50 символами, свойство MaxLength не будет проблемой, потому что 200 адресов электронной почты, умножающихся на 50 символов (каждый адрес электронной почты), у меня будет 10000 символов, а значение по умолчанию TextBox.MaxLength равно 32767

И, прежде чем вы запрашиваете код, я устанавливаю текст только в строку.

myEmailObject.Address = txtEmail.Text;

Должен ли я использовать RichText, или что?

+0

Не более эффективно загружать эти адреса в CSV и анализировать затем в своей программе? зачем писать так, могут ли адреса в одном текстовом поле? –

+0

@ShiinZu Ха-ха, я тоже не знаю. Есть много других способов сделать это, но мои боссы хотят этого. –

+2

Да, за странной просьбой, в 99% случаев есть босс, требующий чего-то ... –

ответ

4

Попробуйте установить свойство Multiline к истинному и увеличить высоту текстового поля

+0

Хорошо, все сработало. Спасибо, но мой контроль небольшой, и я не могу этого сделать. Итак, я просто установил для 6000 символов свойство TextBox.MaxLength. –

8

Это известное ограничение в элементе управления окном редактирования, нативное управление, который обернут классом TextBox. Я знаю, что ограничение присутствует в Windows 7 SP1 и Windows 8, более ранние версии почти наверняка имеют его.

Вы будете использовать этот предел, если в однострочном текстовом поле отображается более 5000 символов. Дайте или возьмите, он основан на общей ширине в пикселях отображаемого текста. Таким образом, вы можете поместиться намного больше, когда используете меньший шрифт или имеете намного больше i, чем W символов. Afaik, вы преодолеете предел, когда ширина превышает 32767 пикселей, номер, который появляется в нескольких местах в USER32 api и восходит к версиям Windows < = 3, которые были 16-разрядными. Основное внимание было уделено обеспечению совместимости EDIT по основным выпускам в течение 30 лет.

Этот предел не проходит очень часто, набирая много символов в однострочном текстовом поле, не является практичным. Нет разумного способа, чтобы пользователь мог делать что-нибудь полезное с таким текстом в таком маленьком пространстве. Невозможно прочитать его, надежное редактирование, конечно, не может быть и речи.

Рассмотрите более практичный и удобный пользовательский интерфейс, ограничение просто перестает быть проблемой. Используйте Multiline = true или просто отобразите строку-держатель, в которой используется многоточие.

+0

Спасибо, и да, я тестирую в Windows 7 SP1, и это было неправильно в этой версии. Кстати, я согласен с вами в том, что в таком небольшом пространстве много текста, но его тестовый пример и тестеры должны протестировать текстовое поле с 200 адресами электронной почты. –

+1

Ну, тогда тест не прошел. –

+0

Да, это провалилось, и здесь я пытаюсь исправить ошибку: / –

Смежные вопросы