1.進行.net窗體的開發,經常用到鼠標事件,如MouseDown/MouseUp/MouseMove/MouseClick等。可是有時候給控件添加鼠標事件,就是不響應,怎么辦呢!
答案:1.控件是否可見,即不能被子控件遮擋,若已經被遮擋,可以在子控件中將鼠標事件調用父控件的OnMouseMove等方法對父控件的鼠標事件進行重寫
2.嘗試在MouseEnter事件中將控件設置為輸入焦點(Focus試試)
2.MouseDown、MouseMove、MouseUp三個事件是如何響應的?
答案:經測試發現
1.當控件可以響應鼠標事件時,第一次MouseDown/MouseMove事件的產生必須是鼠標作用於控件,鼠標位於控件的可見部分。
2.一旦MouseDown作用於控件后,控件總能響應MouseMove/MouseUp事件,即使鼠標指針不在控件上方甚至離開了窗體。通過這點,你就知道該怎樣實現控件改變大小,窗體改變大小等類似的功能了。
3.怎樣實現鼠標單雙擊事件共存?
答案:
鼠標雙擊事件一定會產生單擊事件,所以最好不要單雙擊共存。必須要使用的話,可以在單擊事件中啟動一個計時器Timer,捕獲雙擊事件是否發生,在鼠標雙擊最大時間間隔后仍未發生雙擊事件則必定為單擊事件。所以這樣一來,單擊事件的判斷會很慢,雙擊事件的判定比較快。
4.鼠標事件的參數 MouseEventArgs中的X/Y是啥意思?
這個X/Y指的是鼠標事件產生的位置,相對於事件源(控件)的位置,X表示距離控件左上頂點的橫向坐標,Y表示距離控件左上頂點縱向坐標。
5.怎樣用代碼觸發鼠標事件?
使用windows函數 mouse_event,具體怎么使用,見我的博文。
