91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-06-19 06:45:11 來源:網絡 閱讀:788 作者:arthurshan 欄目:編程語言

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

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

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

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

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

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

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

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

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

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

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

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

運行后,我們將焦點定位到ucbutton1上后按Alt+b,你會發現提示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搜索下一個可觸發控件的范圍就限定在這個用戶控件內了。現在也可以理解第二個實驗為會ucbutton1~3會觸發當前按鈕的原因了,因為在用戶控件的范圍內只有一個熱鍵為Alt+b的控件。

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

夏河县| 栾城县| 灵石县| 金寨县| 武山县| 仁化县| 遂溪县| 沙河市| 称多县| 新蔡县| 保定市| 北海市| 枣庄市| 太白县| 濉溪县| 敦化市| 资讯| 克什克腾旗| 福泉市| 东山县| 叙永县| 法库县| 利津县| 太康县| 安龙县| 灵山县| 三亚市| 丰宁| 苗栗县| 贵德县| 临泽县| 保山市| 吴堡县| 申扎县| 揭阳市| 万州区| 东乡县| 灌南县| 太谷县| 双流县| 武平县|