2010-09-15 81 views
0

所以我是C#的新手,並且已經完成了一些遊戲項目作爲學習練習。C#鼠標處理/表單

一個我目前正在做的是一種實踐運行在RTS。這是非常基本的東西。

我有一個建立坦克的commandbutton;說坦克是包含一個picturebox的類的實例。

說坦克可以通過周圍的任何地方點擊左側那裏沒有其他控制形式上移動。

所述罐還可以在隨機的地方通過右擊形式時啓用殼,或具體地在另外的槽中(即,如果目標坦克移動時,攻擊罐會調整它的相應的目標)。

我正在努力的問題是選擇多個坦克。

我想通過一個橡皮選擇這樣做(即你對你要選擇的坦克拖出一個矩形)。

我試過很多方法來處理各種鼠標事件;理想情況下,我希望它是基於計時器的,所以我也可以處理多個按鍵等,但在我只能使用MouseUp,MouseDown和MouseMove事件做到這一點,因爲計時器使橡皮筋變得痛苦。

問題是,只有在用戶單擊表單時纔會觸發這些操作。當用戶右擊坦克攻擊坦克時,沒有任何反應,因爲目標坦克的picturebox會吞噬鼠標事件。

有人可以在這裏指出我正確的方向嗎?有沒有一種方法可以在鼠標被圖片框吞噬之前攔截鼠標?或者只是製作picturebox(記住這些是在運行時創建的)將鼠標事件傳遞給表單?

或者我正在從錯誤的角度看待此事?有沒有更好的處理方法?

在此先感謝

+0

「我想它是基於定時器,所以我也可以處理多個按鍵等等」如何做一個計時器讓你處理多個按鍵? – recursive 2010-09-15 21:03:01

+0

我以前有一種方法,每次主遊戲計時器打勾時都會檢查某些鍵和鼠標按鈕的狀態,因此您不僅限於一個鍵+修飾鍵,因爲我相信KeyUp,KeyDown等事件是(除非我誤解了這個地方?) – AxeSlash 2010-09-15 22:54:13

回答

0

你最好有一個更容易的時候,我想,與WPF因爲路由事件一起,他們在開始的整個層次出行。坦率地說,這樣做在WinForms中看起來就像是太麻煩了。

不管怎樣,我願意做這將是讓所有的物品與某種事件接收器,可以處理代表他們對事件的登記方式;如果不應該在對象的當前狀態下處理觸發的事件,則將其傳遞到事件接收器,並可能將其路由到適當的位置。增加的複雜性有點多,但這是我能想到的最靈活的方式。