2009-05-11 5 views
1

텍스트 영역과 가장 유사한 사용자 지정 컨트롤을 개발하고 있습니다. 나는 올바르게 작동하는 텍스트를 그리는 중이고 작동하는 입력을 받아들입니다.하지만 수동으로 모든 것을하고 있기 때문에 나는 (입력 한) 캐럿이 어디에 있는지 짐작합니다. 현재 입력하고있는 위치를 표시하기 위해 어떻게 깜박이는 캐럿을 그립니 까? 이것을하기위한 표준 방법이 있습니까?Winforms에서 깜박이는 캐럿 그리기

답변

2

나는 귀찮게도 Carets 용 관리 API가 없다고 생각합니다. 따라서, Win32 함수를 호출하여 캐럿을 수행하거나 직접 기능을 구현해야합니다 (예 : 컨트롤에 입력 포커스가있는 경우에만 깜박이는 캐럿을 페인팅하고 숨김).

예를 들어 Custom Caret for WinForms TextBox을 참조하십시오.

+1

필자는 win32 함수를 사용하는 것을 정말 싫어한다. 그래서 나는 수동으로 캐럿을 그리는 것으로 붙어있다. 누군가 비밀리에 누군가가 "오, 아니, 그냥이 마법의 기능을 사용하라"는 말을 할 것이기를 바랄 것이다. ;-) – Ko9

+0

나는 원한다. FWIW 내 알고리즘은 좁은 사각형을 칠하는 것입니다. 캐럿을 숨기려면 배경색을 사용하여 사각형을 다시 칠하고 단어 (배경의 직사각형 및 전경 텍스트)를 다시 그립니다. – ChrisW