2008-10-30 3 views
0

가능한 중복 :
Watermarked Textbox for Compact Framework하여 drawString

5.

난에하여 drawString을 사용할 필요가 비주얼 스튜디오 2008 SP1, 최신 컴팩트 프레임 워크와 윈도우 모바일을 사용하여 TextBox 위에 문자열을 놓습니다. 하지만 TextBox 컨트롤이 바로 위에 쓰는 문자열을 그릴 때마다. (나는 컨트롤의 가장자리를 약간 잡아 당겼으므로 텍스트는 컨트롤에서 벗어난 곳과 절반이 사라 졌음을 알기 때문에 알 수 있습니다.

어쨌든 나는 TextBox를 새로 고쳐서 거기에 텍스트를 유지할 수 있습니까?

참고 : TextBox를 서브 클래 싱하고 텍스트를 페인트하는 것으로 보았습니다. 그러나 CompactFramework에서는 TextBox 클래스의 Paint 이벤트를 catch 할 수 없습니다. 방법은 내가 텍스트 상자 클래스를 서브 클래 싱 싶어요 페인트 이벤트없이 텍스트 상자에 페인트 할 수 있습니다. Question--의

--end

왜 내가이 작업을해야하는지 궁금해하는 경우를 위해 다음과 같습니다. 숫자 값을 두 번 입력해야하는 텍스트 상자가 필요합니다. 다시 전화 번호를 입력해야한다는 명확한 단서가 필요합니다. 약간 회색으로 표시된 텍스트를 사용자에게 다시 입력하라는 텍스트 상자 위에 표시하고 싶습니다.

레이블, 하이퍼 링크 레이블 및 다른 텍스트 상자를 사용해 보았지만 아래 텍스트 (부분적으로 볼 수있는 기본값이 있음)가 애매합니다.

다른 사람이 재진입을위한 다른 방법을 알면 그 역시 좋을 것입니다!

Vacano

+0

원래 질문을 수정할 수 있습니다. 그러나 만약 당신이 다시 물어봐야한다면, 먼저 이전의 것을 삭제해야하고, 그것에 대한 참조로 당신의 제목을 오염시키지 않아야합니다. – Shog9

+0

참조 http://stackoverflow.com/questions/174796/watermarked-textbox-for-compact-framework – arul

답변

1

이 문제는 다른 방식으로 해결할 수 있습니다. 이전 입력의 실루엣을 변경하여 다시 입력해야하는 것처럼 들립니다.

CF가 최근에 어떤 보폭을 만들 었는지 알 수는 없지만 RichTextBox가 있으면이 방법이 효과적입니다. 그렇지 않다면 기본 컨트롤로 시작하는 자체 구현을 작성해야합니다.

  1. RichTextBox의 텍스트를 실루엣 값으로 설정하지만 모든 문자에 대해 텍스트 색상을 회색으로 지정하십시오.
  2. 키 누르기 이벤트를 캡처하고 올바른 키를 누를 때 해당 문자의 텍스트 색을 회색에서 검정색으로 변경하고 해당 키 누름을 버리고 다른 모든 키를 버립니다.

이 솔루션은 자유형 텍스트와 같이 예약을 취소 할 수 있도록하려는 경우 작동하지 않습니다. 문자를 잘못 입력하거나 다른 문자를 입력하면 입력 한 내용을 삭제하는 대신 키 누르기를 삭제하지 않고 현재 및 나머지 회색 문자를 비워서 실루엣없이 입력 할 수있게합니다.

당신이 DrawText에을하고있다 :이의 폐쇄 속는에

1

대답으로? TextBox 부모? 그렇다면 예상되는 동작입니다.OnPaint를 처음부터 다시 칠해 사용자 지정 TextBox 컨트롤을 만들면 어떨까요? 연한 회색과 같은 색으로 칠한 다음 두 번째로 다시 검정색으로 그립니다.