2011-05-27 8 views
5

¿Por qué TextBoxes tiene una propiedad TextLength? ¿Ofrece alguna ventaja sobre obtener la longitud del texto a través de Text.Length?¿Por qué los cuadros de texto .Net tienen TextLength versus Text.Length?

+3

¿A qué tipo de cuadro de texto se refiere? WPF? ¿Formularios de Windows? –

+0

@John Presumiblemente WinForms ya que ese es el que realmente tiene la propiedad 'TextLength'. –

+0

Debería haber especificado, pero sí, WinForms. –

Respuesta

15

Detrás de este control de WinForms es un control de edición Win32.

El control de edición Win32 expone su texto a través de los mensajes WM_GETTEXTLENGTH y WM_GETTEXT. Primero debe enviar WM_GETTEXTLENGTH para que sepa cuán grande es el buffer que debe asignar. Luego puede enviar WM_GETTEXT para llenar el búfer.

Si solo desea la longitud del texto, puede obtenerlo sin asignar un búfer enviando solo el mensaje WM_GETTEXTLENGTH.

El control .net simplemente refleja el comportamiento de este control subyacente. Para un control de varias líneas con mucho texto, poder obtener la longitud del texto sin tener que asignar y llenar el búfer podría ser muy útil para el rendimiento.

+0

¿Dónde puedo encontrar información como esta? La documentación de .Net no entra en este nivel de detalle. –

+0

@Corey Este tipo de conocimiento solo se obtiene realmente mediante la programación en contra de la API de Win32. Es difícil obtenerlo cuando se trabaja con WinForms. Aunque puede programar la API de Win32 desde .net, es desordenado. Personalmente aprendí todo mi Win32 a través de Delphi VCL y no tengo experiencia en C#, .net, WinForms, etc. –

Cuestiones relacionadas