본문 바로가기

C#

TextBox의 바이트 제한에 관하여 알아보자

WinForm의 RichTextBox 혹은 TextBox에서 한글을 입력할 경우 여러 번의 TextChanged 이벤트 함수가 호출되는 현상을 알 수 있습니다.

한글 입력 시 여러 번의 TextChanged 함수가 호출 되기 때문에 특정 바이트 이상 제한하는 로직을 추가할 경우 
해당 로직을 수행되지 않음을 알 수 있습니다.
이 때, 전역변수를 통해 TextChanged가 여러 번 호출 되더라도 바이트 제한 로직을 한번 수행하도록 하게 하며 입력된 텍스트의 바이트 길이가 제한하고자 하는 바이트 길이보다 클 경우 더 이상 입력되지 않도록 KeyPress 이벤트 함수에서 e.Handle = true 를 통해 KeyDown 이벤트가 발생되지 않도록 합니다.
또한, 입력된 텍스트가 제한하고자 하는 바이트보다 큰 경우 While문을 통해 입력된 텍스트의 마지막 글자를 하나 씩 제거하면서 제거된 텍스트가 제한하고자 하는 텍스트보다 작아질때까지 해당 로직을 수행함으로써 제한할 수 있습니다.