欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Winform對多個按鈕相同熱鍵時的處理

在Winform中我們可以通過在按鈕的名稱上使用&來給按鈕設置熱鍵。但是如果多個按鈕有相同的熱鍵時會發(fā)生什么呢?我們來做個實驗。

創(chuàng)新互聯(lián)公司是一家集成都做網站、網站建設、網站頁面設計、網站優(yōu)化SEO優(yōu)化為一體的專業(yè)網絡公司,已為成都等多地近百家企業(yè)提供網站建設服務。追求良好的瀏覽體驗,以探求精品塑造與理念升華,設計最適合用戶的網站頁面。 合作只是第一步,服務才是根本,我們始終堅持講誠信,負責任的原則,為您進行細心、貼心、認真的服務,與眾多客戶在蓬勃發(fā)展的市場環(huán)境中,互促共生。

我們放三個按鈕并設置同樣的熱鍵,然后在每個按鈕的處理函數里使用MessageBox.Show來輸出自己的名稱,以此來說明哪個按鈕被觸發(fā)了。

Winform 對多個按鈕相同熱鍵時的處理

Winform 對多個按鈕相同熱鍵時的處理

運行程序后,按Alt+b你會發(fā)現(xiàn)彈出了button2的提示,按確定后沒再有別的提示。如下圖:

Winform 對多個按鈕相同熱鍵時的處理

這時你再讓button2獲取焦點后再按Alt+b試試,你會收到button3的提示。由此可以得出,Winform是根據當前的焦點位置和Tab順序來搜索下一個可觸發(fā)熱鍵的控件來處理的。要注意的是搜索的順序是從當前焦點的下一個控件開始到當前焦點的控件為止來搜索。

我們再做一個試驗,新建一個用戶控件,在這個用戶控件中我們添加一個按鈕,并將熱鍵設置為Alt+b。在后臺添加一個Sequence屬性,在控件的Load事件中將button的名稱上加上Sequence的值,在按鈕的Click事件中Show出按鈕的名稱以表示哪個按鈕被觸發(fā)。

Winform 對多個按鈕相同熱鍵時的處理

Winform 對多個按鈕相同熱鍵時的處理

用戶控制做好后我們將它添到我們的form上,放三個并依次將Sequence屬性改為1,2,3。

Winform 對多個按鈕相同熱鍵時的處理

運行后,我們將焦點定位到ucbutton1上后按Alt+b,你會發(fā)現(xiàn)提示uc&button1的消息。ucbutton2和uc&button3也是如此。

Winform 對多個按鈕相同熱鍵時的處理

那為什么會這樣呢?是不是Usercontorl有不同的處理呢?我們再來做個實驗吧。再新建一個用戶控件,添加3個按鈕設置相同的熱鍵,并添加后臺方法如下:

Winform 對多個按鈕相同熱鍵時的處理

Winform 對多個按鈕相同熱鍵時的處理

再將這個用戶控件添加到窗體中。

Winform 對多個按鈕相同熱鍵時的處理

運行程序后把焦點置于button3后按Alt+b你會收到uc2button1的提示,通過上面的結論這個是正確的。當你把焦點置于uc2button1時按Alt+b你會收到uc2button2的提示,當你把焦點置于uc2button3上時按Alt+b你會收到uc2button1的提示。

所以可以得出結論了。當焦點進入usercontrol之后Winform搜索下一個可觸發(fā)控件的范圍就限定在這個用戶控件內了。現(xiàn)在也可以理解第二個實驗為會ucbutton1~3會觸發(fā)當前按鈕的原因了,因為在用戶控件的范圍內只有一個熱鍵為Alt+b的控件。

不過我們正常情況下是不會遇到這個問題的,我是在一個form上加載多次同一個用戶控件時才遇到這個問題的。個人認為我們不應該依賴于Winform的這種搜索機制,而是自己多加處理來控制熱鍵的觸發(fā)邏輯,如通過Enable或Visable來保證熱鍵不沖突。

本文題目:Winform對多個按鈕相同熱鍵時的處理
文章鏈接:http://www.chinadenli.net/article20/gpdojo.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)網站制作品牌網站建設做網站網站改版云服務器自適應網站

廣告

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

營銷型網站建設