2009-05-21 4 views
0

나는 윈도우 폼 애플리케이션 (업데이트 된 프레임 워크, 로직 재 작성 등)을 다시 쓰고 있는데, 어떻게 그랬는지 알아낼 수없는 한 가지가있다. 원본 응용 프로그램의 텍스트 상자에는 다음과 같이 두꺼운 깜박이는 커서가 나타납니다. http://screencast.com/t/8QYUcjuh3nWindows 폼 : 텍스트 상자에 커서를 두껍게 깜박이는 방법?

나는이 일을하는 방법을 알 수 없습니다. 도와주세요?

답변

1

당신은 PInvoke를 CreateCaret

예제는 버튼 (단추 1) 및 텍스트 상자 (을 textBox1)으로의 WinForm을 사용하여 그것을 할 수 있습니다.

[DllImport("user32.dll")] 
static extern bool CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidth, int nHeight); 
[DllImport("user32.dll")] 
static extern bool ShowCaret(IntPtr hWnd); 

버튼 클릭 이벤트에이 코드를 추가합니다 :

// Thickness is set where I have 10. 
    CreateCaret(textBox1.Handle, IntPtr.Zero, 10, textBox1.Height); 
    ShowCaret(textBox1.Handle); 

버튼을 '클릭하면

using System.Runtime.InteropServices; 

이 선언을 추가

이 사용하는 지시문을 추가 두꺼운 커서가 생깁니다.

또한 here에 대한 토론이 있습니다.

+0

끝내 주셔서 감사합니다 ... 이제는 내가 무엇을 검색해야 할지를 알았으니, 어떻게 그들이 이걸 어떻게 호출했는지 봅니다. 사실 ... 매일 매일 WTF 우승자입니다. –

+0

문제 없습니다. 불행히도 내 WTF는 매일 이상입니다! –

+0

실제로, 나는 이것에 문제가있다, 그것은 다른 스레드에서 생성 된 컨트롤 핸들과 폼을 일으키는 것 같다. form.Show() 따라서 어떤 아이디어를 교차 스레딩 예외가 발생합니까? –

관련 문제