2012-01-23 61 views
1

在我的Windows應用程序中,我想隱藏以及禁用任何鼠標移動,因爲我正在從我的應用程序中處理它。我可以將光標的位置設置爲一個點,但是如果用戶移動鼠標,則它會改變位置。如何在C中禁用鼠標移動#

如何阻止用戶輸入移動鼠標?

+0

它不是重複只是試着去了解的功能secanario。 – Abhishek

回答

2

Cursor.Hide()方法。它仍然是可移動的,但隱藏起來。 您也可以處理MouseMove事件並設置Cursor.Position。

+0

這種方法只隱藏光標,並不意味着螢火蟲運動被禁用。 – Abhishek

+0

正如我寫的「它仍然是可移動的,但隱藏」.. :) –

+0

你使用什麼命名空間?我的光標沒有位置。 –

3

使您的表單實現IMessageFilter。然後用下面的代碼在窗體隱藏光標,但要確保鼠標左/右單擊禁用過

Rectangle BoundRect; 
    Rectangle OldRect = Rectangle.Empty; 

    private void EnableMouse() 
    { 
     Cursor.Clip = OldRect; 
     Cursor.Show(); 
     Application.RemoveMessageFilter(this); 
    } 
    public bool PreFilterMessage(ref Message m) 
    { 
     if (m.Msg == 0x201 || m.Msg == 0x202 || m.Msg == 0x203) return true; 
     if (m.Msg == 0x204 || m.Msg == 0x205 || m.Msg == 0x206) return true; 
     return false; 
    } 
    private void DisableMouse() 
    { 
     OldRect = Cursor.Clip; 
     // Arbitrary location. 
     BoundRect = new Rectangle(50, 50, 1, 1); 
     Cursor.Clip = BoundRect; 
     Cursor.Hide(); 
     Application.AddMessageFilter(this); 
    } 

見:Disabling mouse movement and clicks altogether in c#

+0

感謝回覆,但它只隱藏光標,它不會禁用鼠標移動。 – Abhishek

+1

實際上,這應該將鼠標保持在屏幕的座標:[50,50]處。 – annonymously

+0

你不應該從源代碼中複製它的代碼嗎?請參閱[禁用鼠標移動並在c#中完全單擊](http://stackoverflow.com/a/2698843/719186) – LarsTech