Windows Form 中的滑鼠事件

2021-09-05 21:36:06 字數 3850 閱讀 8575

windows form 中的滑鼠事件

在處理滑鼠輸入時,通常會想要知道滑鼠指標位置和滑鼠按鈕狀態。這個主題提供關於如何從滑鼠事件取得此項資訊的詳細內容,同時還說明滑鼠 click 事件在 windows form 控制項中的引發順序。如需所有滑鼠事件的清單和描述,請參閱滑鼠輸入在 windows form 中的運作方式。如需詳細資訊,請參閱事件概觀及事件處理例程概觀。

滑鼠資訊

mouseeventargs會傳送至與按一下滑鼠按鈕和追蹤滑鼠移動相關的滑鼠事件處理例程。mouseeventargs提供有關滑鼠目前狀態的資訊,其中包括工作區座標 (client coordinate) 中的滑鼠指標位置、按下哪個滑鼠按鈕以及滑鼠滾輪是否已捲動等資訊。例如單純通知滑鼠何時進入或離開控制項界限等數種滑鼠事件會將eventargs傳送至事件處理例程,但不帶任何詳細資訊。

如果想知道滑鼠按鈕的目前狀態或滑鼠指標位置,但要避免處理滑鼠事件,則您也可以使用control事件的mousebuttons和mouseposition屬性。mousebuttons會傳回關於目前按下的滑鼠按鈕是哪個的資訊。mouseposition則傳回滑鼠指標的螢幕座標 (screen coordinate),它即等同於position所傳回的值。

在螢幕座標和工作區座標之間轉換

由於有些滑鼠位置資訊是工作區座標格式而另一些則是螢幕座標格式,您可能需要將某個點轉換成另一種座標系統。您可以藉由 control 類別上可供使用的pointtoclient和pointtoscreen方法,便能輕鬆執行這項工作。

標準 click 事件行為

如果想要以正確順序處理滑鼠 click 事件,您需要知道 click 事件在 windows form 控制項中的引發順序。所有的 windows form 控制項在按下和釋放滑鼠按鈕時,除了以下個別控制項提及的順序之外,都是以相同的順序引發 click 事件 (不論是哪乙個滑鼠按鈕)。下表顯示的是按一下單一滑鼠按鈕時所引發的事件順序:

1.mousedown事件。

2.click事件。

3.mouseclick事件。

4.mouseup事件。

以下是按兩下滑鼠按鈕時所引發的事件順序:

1.mousedown事件。

2.click事件。

3.mouseclick事件。

4.mouseup事件。

5.mousedown事件。

6.doubleclick事件。(這可能會依據特定控制項的standarddoubleclick樣式位 (style bit) 是否設為 true 而有所不同。如需如何設定controlstyles位的詳細資訊,請參閱setstyle方法)。

7.mousedoubleclick事件。

8.mouseup事件。

如需示範滑鼠 click 事件順序的程式**範例,請參閱how to:處理 windows form 控制項中的使用者輸入事件。

個別控制項

下列控制項不符合標準滑鼠 click 事件行為:

·             button、checkbox、combobox和radiobutton控制項

注意事項

對於 combobox 控制項而言,不論使用者是按了一下編輯字段、按鈕或清單中的專案,下述的事件行為都會發生。

o                                    以滑鼠左鍵按一下:click、mouseclick

o                                    以滑鼠右鍵按一下:不會引發 click 事件

o                                    以滑鼠左鍵按兩下:click、mouseclick;click、mouseclick

o                                    以滑鼠右鍵按兩下:不會引發 click 事件

·             textbox、richtextbox、listbox、maskedtextbox和checkedlistbox控制項

注意事項

當使用者按一下這些控制項內的任何地方時,會發生下述的事件行為。

o                                    以滑鼠左鍵按一下:click、mouseclick

o                                    以滑鼠右鍵按一下:不會引發 click 事件

o                                    以滑鼠左鍵按兩下:click、mouseclick、doubleclick、mousedoubleclick

o                                    以滑鼠右鍵按兩下:不會引發 click 事件

·             listview控制項

注意事項

稍後詳細說明的事件行為只有當使用者按一下 listview 控制項中的專案時才會發生。按控制項的其它地方並不會引發任何事件。如果您想要以 listview 控制項來使用驗證功能,除了下述事件以外,您可能還會對 beforelabeledit和 afterlabeledit事件感到興趣。 

o                                    以滑鼠左鍵按一下:click、mouseclick

o                                    以滑鼠右鍵按一下:click、mouseclick

o                                    以滑鼠左鍵按兩下:click、mouseclick;doubleclick、mousedoubleclick

o                                    以滑鼠右鍵按兩下:click、mouseclick;doubleclick、mousedoubleclick

·             treeview控制項

注意事項

稍後詳細說明的事件行為只有當使用者按一下專案本身或按一下 treeview 控制項中的專案右邊時才會發生。按控制項的其它地方並不會引發任何事件。如果您想要以 treeview 控制項來使用驗證功能,除了下述事件以外,您可能還會對 beforecheck、beforeselect、beforelabeledit、afterselect、aftercheck和 afterlabeledit等事件感到興趣。 

o                                    以滑鼠左鍵按一下:click、mouseclick

o                                    以滑鼠右鍵按一下:click、mouseclick

o                                    以滑鼠左鍵按兩下:click、mouseclick;doubleclick、mousedoubleclick

o                                    以滑鼠右鍵按兩下:click、mouseclick;doubleclick、mousedoubleclick

切換控制項的繪製行為

當切換控制項 (例如衍生自buttonbase類別的控制項) 發生滑鼠 click 事件時,會產生下列特殊的繪製行為:

1.使用者按滑鼠按鈕。

2.控制項在按下的狀態中進行繪製。

3.便會引發 mousedown 事件。

4.使用者放開滑鼠按鈕。

5.控制項在上公升的狀態中進行繪製。

6.便會引發 click 事件。

7.便會引發 mouseclick 事件。

8.便會引發 mouseup 事件。

注意事項

如果使用者在滑鼠按下時將指標移出切換控制項 (例如在按下 button 控制項時移開滑鼠),切換控制項將以上公升狀態繪製並且僅發生 mouseup 事件。在這種情況下,並不會發生 click 或 mouseclick 事件。

來自msdn

Windows Form程式設計中的MVC

mvc包括模型 檢視和控制器三個角色,模型代表具體的資料和行為,檢視表示資料的顯示,控制器則是獲得使用者操作,改變資料,控制檢視顯示。其核心在於從模型中分離檢視,以及從檢視中分離控制器。對於windows form程式 vb 6是類似的 控制器基本是系統內建的窗體和各類元件 控制項 不需要寫獲得使用...

在IE中託管Windows Form

net的偉大之處之一是它提供的與ie的無縫整合能力。例如,我們甚至能夠在使用者不知道的情況下從ie中啟用乙個windows forms控制項。儘管利用了由.net clr提供的code access security的所有功能,但這是在無需進行註冊的情況下完成的。當開發windows forms控制...

怪異的Windows Form事件

因為工作忙,很久沒有來了,呵呵。在ms的webmatrix中,對form增加了個新的事件 initactivated,檢測這個 發現只是對form的activated事件的特例處理,即在第一次觸發activated的時候觸發這個事件,其 如下 if this.initactivatedraised ...