WinForm의 RichTextBox 혹은 TextBox에서 한글을 입력할 경우 여러 번의 TextChanged 이벤트 함수가 호출되는 현상을 알 수 있습니다.
한글 입력 시 여러 번의 TextChanged 함수가 호출 되기 때문에 특정 바이트 이상 제한하는 로직을 추가할 경우 해당 로직을 수행되지 않음을 알 수 있습니다.
이 때, 전역변수를 통해 TextChanged가 여러 번 호출 되더라도 바이트 제한 로직을 한번 수행하도록 하게 하며 입력된 텍스트의 바이트 길이가 제한하고자 하는 바이트 길이보다 클 경우 더 이상 입력되지 않도록 KeyPress 이벤트 함수에서 e.Handle = true 를 통해 KeyDown 이벤트가 발생되지 않도록 합니다.
또한, 입력된 텍스트가 제한하고자 하는 바이트보다 큰 경우 While문을 통해 입력된 텍스트의 마지막 글자를 하나 씩 제거하면서 제거된 텍스트가 제한하고자 하는 텍스트보다 작아질때까지 해당 로직을 수행함으로써 제한할 수 있습니다.
'C#' 카테고리의 다른 글
Key 이벤트 순서 및 처리 (0) | 2020.12.09 |
---|---|
비동기 프로그래밍(Task)에 알아보자 (0) | 2020.12.09 |
UAC(사용자 계정 컨트롤)로 인하여 Drag & Drop 기능 작동 안할 시 (0) | 2020.12.09 |