亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

南通市| 于田县| 宜黄县| 兴文县| 东源县| 普宁市| 锡林郭勒盟| 营山县| 同江市| 阳东县| 青龙| 和龙市| 南雄市| 九寨沟县| 广宗县| 平邑县| 当阳市| 名山县| 达孜县| 巨鹿县| 昭通市| 临湘市| 从化市| 濮阳市| 漳平市| 通州区| 安平县| 兴仁县| 寻乌县| 繁峙县| 加查县| 孟州市| 台东市| 即墨市| 收藏| 禹州市| 图木舒克市| 那曲县| 长治县| 西平县| 波密县|