2010-06-23 1 views
0

Cursor canging 메서드 중 하나의 결과로 의심되는 이상한 Cursor 비헤이비어를 발견했습니다. 때로는 우리 PC가 SizeAll 커서를 계속 표시합니다. 어디서나, 모든 응용 프로그램에서. 이제 코드의 어느 곳에서나 SizeAll 커서를 사용하지 않지만 코드 실행 후 커서를 "Unstuck"할 수 있습니다.Logitech G9로 인한 SizeAll에서 PC 커서 (때때로)가 걸림

우리는 정적 Cursor Property로 문제가 의심되지만 오류를 식별 할 수 없습니다.

코드에 무슨 문제가 있습니까?

감사합니다.

static class GlobalVars 
{ 

    private static Cursor handOpenCursor; 

    public static Cursor HandOpenCursor 
    { 

     get 
     { 
      if (handOpenCursor == null) 
      { 
       string cursorPath = System.IO.Path.Combine(ApplicatiePaths.ImagePath, @"hand_open.cur"); 
       handOpenCursor = new Cursor(cursorPath); 
       return handOpenCursor; 
      } 
      else 
      { 
       return handOpenCursor; 
      } 
     } 
     set 
     { 
      handOpenCursor = value; 
     } 
    } 
} 


..... 



private static void panel_MouseUp(object sender, MouseEventArgs e) 
{ 
    ((Control)sender).Cursor = GlobalVars.HandOpenCursor; 
} 
+0

첫째, 멋진 이름입니다. 나는 이것이 그것이 음악적 기준으로 의도 되었기를 희망한다. 둘째, 제목에 "C#/.NET"과 같은 태그를 복제하지 마십시오. 태그에 그냥 남겨주세요. –

+0

스 니펫에 커서를 복원하는 코드가 없습니다. 어디 있니? –

+0

@ 존 : 첫째, 감사합니다. :-) 항상 시작 -> 실행 -> CMD :-)를 읽거나 할 때 미소를 지어야합니다. 둘째, 오케이, 죄송합니다. 다시하지 않겠습니다. @Hans : MouseUp이 기본 커서로 재설정되는 동안 동일한 "MouseDown"이벤트가 "Hand drag"커서를 표시합니다. 동일한 논리를 사용합니다. –

답변

0

3 개월 후에도 결국 문제를 확인했습니다. 그것은 .NET이나 XP가 아니었지만 사용자 정의 소프트웨어가있는 Logitech G9 마우스가 있습니다.

커서가 고정되어 있고 제어판 -> 마우스 -> 포인터 구성표로 가면 오른쪽 구성표가 선택되어 있지만 (Windows 기본값) 구성표의 모든 커서는 동일한 SizeAll 커서?!?!

G9 드라이버가이 미친 동작을 일으킨 것 같습니다. 다른 구성표를 선택한 다음 다시 "Windows 기본값"을 선택하면 문제가 해결됩니다.

0

스레드가 안전하지 않다는 점을 제외하고는이 정적 클래스에 어떤 문제가 있는지 알 수 없습니다. 다른 작업은 사용자 정의 커서를 설정하여 커서를 정상 상태로 재설정해야하는 경우입니다. 이 경우, 예를 들어 :

this.Cursor = Cursor.Wait; 
    throw new Exception(); 
    this.Cursor = Cursor.Default; 

커서 리셋하지 않을 것이다.

+0

왜 스레드가 안전하지 않습니까? –

+0

두 개의 스레드가 동시에 새로운 커서 (cursorPath)를 실행할 수 있습니다. 이로 인해 예외가 발생합니다. –

+0

아니, 그는 InvalidOperationException을 얻을거야. –