2011-05-27 17 views
5

Neden TextBox'larda bir TextLength özelliği var? Text.Length ile Text'in Uzunluğunu almanın avantajlarını sunuyor mu?Neden .Net metin kutuları TextLength vs Text.Length?

+3

Ne tür bir metin kutusu için başvuruyorsunuz? WPF? Windows formları? –

+0

@John Muhtemelen WinForms olduğundan, aslında TextLength özelliğini taşıyor. –

+0

Belirttim, ancak evet, WinForms. –

cevap

15

Bu WinForms denetiminin arkasında bir Win32 düzenleme denetimi vardır.

Win32 düzenleme denetimi, metni WM_GETTEXTLENGTH ve WM_GETTEXT mesajlarından gösterir. İlk önce WM_GETTEXTLENGTH göndermeniz gerekir, böylece bir arabelleğin ne kadar büyük olduğunu bilmeniz gerekir. Ardından arabelleği doldurmak için WM_GETTEXT gönderebilirsiniz.

Yalnızca metnin uzunluğunu istiyorsanız, yalnızca WM_GETTEXTLENGTH iletisini göndererek arabellek ayırmadan arabelleğe alabilirsiniz.

.net denetimi basitçe bu temel denetimin davranışını yansıtır. Çok metinli çok satırlı kontrol için, arabelleği ayırmak ve doldurmak zorunda kalmadan metin uzunluğunu elde edebilmek, performans için çok yararlı olabilir.

+0

Böyle bir bilgiyi bulmak için nereye gidebilirim? .Net belgeleri bu ayrıntıya girmez. –

+0

@Corey Bu tür bir bilgi sadece Win32 API'sine karşı programlama ile elde edilir. WinForms ile çalışırken bunu elde etmek zor. Her ne kadar Win32 API'sini .net'den programlayabilirsiniz, ancak dağınık. Ben şahsen tüm Win32 benim Delphi VCL öğrendim ve C#, .net, WinForms vb sıfır deneyimim var –

İlgili konular