Почему .Текстовые поля Net имеют длину текста в сравнении с Text.Length?

#.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 и т.д.