欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C#鼠標事件的處理機制是什么

本篇內容介紹了“C#鼠標事件的處理機制是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

創(chuàng)新互聯公司主要從事做網站、成都網站設計、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務寬城,十年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575

C#鼠標事件包括鼠標的很多操作,比如為用戶提供鼠標的右鍵單擊功能、右鍵拖拽等等。處理C#鼠標事件比較簡單,只要設置好屬性,點擊右鍵就會出現菜單,進一步右鍵拖拽就涉及到時間處理。

過去用C++/MFC開發(fā)程序時,常常為用戶提供鼠標的右鍵單擊功能,如今在.NET框架中使用C#,也想在程序中提供鼠標右鍵單擊功能,比如,在文本框、窗格、標簽以及主窗口背景上使用鼠標右鍵。畢竟C#不是C++/MFC,那么如何處理C#鼠標事件呢?本文下面將專門探討這個問題。

在.NET框架下編程是非常容易的一件事情,有時候容易得連C++程序員想都想不到。這主要是因為用C++編寫代碼常常需要“硬工夫”。所謂“硬工夫”,也就是很多細節(jié)都要自己考慮和處理。但使用C#則不然。如果你想顯示上下文菜單,完全沒有必要去和事件參合。只要設置控制的ContextMenu屬性即可,就象下面這樣:

ContextMenu myContextMenu = ...  myControl.ContextMenu = myContextMenu;

就這么簡單。只要按照上述方法設置好屬性,當用戶單擊右鍵時,菜單便會自動顯示出來。此外,如果你想進一步實現右鍵拖拽,這才涉及到事件處理。在MFC中,你會自然而然想到用OnRButtonDown和OnRButtonUp實現,但是那不是Windows窗體(Forms)的工作方式。雖然許多窗口類確實提供了可以改寫的虛擬函數來處理常用消息(如:Form.OnActivated和Form.OnClosed),但是在.NET框架中編程,你必須要學會用事件來思考,而且要了解一個類提供了哪些事件。下面這個表列出了被Control類提供的比較常用的事件:

(表一)

ClickHelpRequestedMouseLeave
ContextMenuChangedInvalidatedMouseMove
DoubleClickKeyDownMouseUp
DragDropKeyPressMouseWheel
DragEnterKeyUpMove
DragLeaveLayoutPaint
DragOverLeaveParentChanged
EnabledChangedLostFocusResize
EnterMouseDownSizeChanged
FontChangedMouseEnterStyleChanged
GotFocusMouseHoverTextChanged


注意表中用黑體標出的事件,這些事件顧名便可思意:MouseDown、 MouseEnter、 MouseHover、 MouseLeave、 MouseMove  和 MouseUp,如果你想要處理右鍵按下事件,可以安裝MouseDown 事件處理例程,用MouseEventArgs.Button == MouseButtons.Right 檢查 MouseEventArgs,下面的代碼段示范了如何來做:

public class MyControl : Control  {     // 構造函數     public MyControl() {        // 安裝右鍵按下事件處理器         this.myctl1.MouseDown +=            new MouseEventHandler(this.OnMouseDown);     }      // 處理例程     private void OnMouseDown(object sender, MouseEventArgs e) {        if (e==MouseButtons.Right)           // do something     }  }

表一里有三個有用的鼠標事件是在MFC中不能直接處理的:MouseEnter、 MouseHover 和MouseLeave。在Win32 里,要處理這些事件必須通過專門的TrackMouseEvent 函數。.NET框架中,每當鼠標進入或離開特定控制時便會觸發(fā)MouseEnter 和MouseLeave,當你想在鼠標移動到控制上時使控制呈高亮狀態(tài),這些事件相當有用,例如在瀏覽器中高亮顯示鏈接。當鼠標移動到控制上后,在預先確定好的時間里(這個時間由 SystemParametersInfo(SPI_GETMOUSEHOVERTIME)) 指定),.NET 框架會激活 MouseHover。它在 Tooltips 和其它類似的定時彈出式功能應用中廣泛使用。

這些鼠標事件和大家所熟悉的Click 事件有何關系呢?我想可以這么認為,Click屬于層次較高的邏輯事件,而鼠標事件的級別相對較低,例如,不管用戶按下的是左鍵還是右鍵,Forms都觸發(fā)Click 事件,而文本框只能觸發(fā)左鍵的Click事件。表二中列出了不同種類的控制其Click事件的含意。
(表二)由 Click 激發(fā)的事件

控制或控件鼠標左鍵單擊鼠標左鍵雙擊鼠標右鍵單擊鼠標右鍵雙擊鼠標中鍵單擊鼠標中鍵雙擊
MonthCalendar, DateTimePicker, RichTextBox, HScrollBar, VScrollBarNoneNoneNoneNoneNoneNone
Button, CheckBox, RadioButtonClickClick, ClickNoneNoneNoneNone
ListBox, CheckedListBox, ComboBoxClickClick, DoubleClickNoneNoneNoneNone
TextBox, DomainUpDown, NumericUpDownClickClick, DoubleClickNoneNoneNoneNone
*TreeView, *ListViewClickClick, DoubleClickClickClick, DoubleClickNoneNone
ProgressBar TrackBarClickClick, ClickClickClick, ClickClickClick, Click
Form, DataGrid, Label, LinkLabel, Panel,GroupBox, PictureBox, Splitter, DoubleClick, StatusBar,ToolBar, TabPage, **TabControlClickClick, DoubleClickClickClick, DoubleClickClickClick, DoubleClick
* 鼠標指針必須在子對象上方 (TreeNode 或 ListViewItem)
**  TabControl 必須在其 TabPages  頁集合中至少有一個 TabPage。


***,不管怎樣,只要你愿意,總是可以改寫Control.WndProc 來處理任何WM_XXX 消息,比如:你可以定制WM_NCLBUTTONDOWN 消息處理代碼:

protected override void WndProc(ref Message m)  {     // 值來自 winuser.h     const int WM_NCLBUTTONDOWN = 0x00A1;     if (m.Msg == WM_NCLBUTTONDOWN) {        //do something     }     base.WndProc(ref m); // 這一步不能忘!  }

我寫了一個例子程序MouseTrap,如圖一所示,
C#鼠標事件的處理機制是什么
圖一 MouseEventTrap

該程序示范了如何進行鼠標事件的處理。如果你借WndProc處理消息,由于必須用IntPtrs獲取消息參數,所以你或多或少要用C編程,但因為你已經諳熟C++,所以此時你不會感覺吃力,而是輕車熟路。

“C#鼠標事件的處理機制是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯網站,小編將為大家輸出更多高質量的實用文章!

網頁題目:C#鼠標事件的處理機制是什么
分享網址:http://aaarwkj.com/article34/pjdepe.html

成都網站建設公司_創(chuàng)新互聯,為您提供App設計靜態(tài)網站、品牌網站設計網站排名、軟件開發(fā)、網站內鏈

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

營銷型網站建設
日本成人一区二区在线播放| 91九色在线视频观看| 三级久久三级久久三级| 91麻豆精品一区二区三区| 久久久国产精品9999综合| 人人爽人人妻人人澡| 九九视频免费在线播放| 国产三级国产精品国产| 亚洲一区精品二人人爽久久| 成年人正常性生活频率| 亚洲精品欧美无人区乱码| 你懂的免费视频中文字幕| 色综合久久天天射天天干| 亚洲av在线av天堂| 91在线国产手机视频| 欧美另类亚洲日本一区二区| 日本成人午夜在线观看| 巨乳人妻一区二区三区| 麻豆AV一区二区三区久久| 欧美一区日韩二区在线| 麻豆国产传媒片在线观看| 欧美香蕉视频一区二区| 粉嫩av一区二区三区四区| 色婷婷区二区三区四区| 热久久精品只有这里有| 国产精品久久久久大屁股精品性色| 乱熟av一区二区三区| 国内揄拍国内精品少妇国| 久久婷婷国产综合色啪| 激情影院在线观看福利| 亚洲欧美日韩国产亚洲欧美日韩国产| 国产av人妻精品一区二| 日韩人妻高清精品专区| 亚洲精品丝袜成人偷拍| 日日插天天干夜夜操| 国产三级精品三级专区| 日日爱欧美精品亚洲成| 欧美日韩电影一区二区三区在线观看 | 亚洲一区二区三区精品电影网| 欧美亚洲国产精品久久久| 邻居少妇扒开腿让我爽了一夜|