#.net #winforms #textbox
#.net #winforms #текстовое поле
Вопрос:
Почему текстовые поля имеют свойство textLength? Дает ли это какие-либо преимущества по сравнению с получением длины текста через Text.Length?
Комментарии:
1. О каком текстовом поле вы говорите? WPF? Windows Forms?
2. @John Предположительно WinForms, поскольку именно у нее действительно есть
TextLength
свойство.3. Я должен был указать, но да, WinForms.
Ответ №1:
За этим элементом управления WinForms находится элемент управления редактированием Win32.
Элемент управления редактированием Win32 предоставляет свой текст через WM_GETTEXTLENGTH
и WM_GETTEXT
сообщения. Сначала вам нужно отправить WM_GETTEXTLENGTH
, чтобы вы знали, какой размер буфера выделить. Затем вы можете отправить WM_GETTEXT
для заполнения буфера.
Если вам просто нужна длина текста, вы можете получить его без выделения буфера, отправив просто WM_GETTEXTLENGTH
сообщение.
Элемент управления .net просто отражает поведение этого базового элемента управления. Для многострочного элемента управления с большим количеством текста возможность получения длины текста без необходимости выделения и заполнения буфера может быть очень полезной для повышения производительности.
Комментарии:
1. Куда я могу обратиться, чтобы найти подобную информацию? The . Документация Net не содержит такого уровня детализации.
2. @Corey Такого рода знания действительно можно получить, программируя с использованием Win32 API. Это трудно получить при работе с WinForms. Хотя вы можете запрограммировать Win32 API из .net, это беспорядочно. Я лично изучал весь свой Win32 через Delphi VCL и не имею никакого опыта работы с C #, .net, WinForms и т.д.