在Winform中我們可以通過在按鈕的名稱上使用&來給按鈕設(shè)置熱鍵。但是如果多個按鈕有相同的熱鍵時(shí)會發(fā)生什么呢?我們來做個實(shí)驗(yàn)。
我們放三個按鈕并設(shè)置同樣的熱鍵,然后在每個按鈕的處理函數(shù)里使用MessageBox.Show來輸出自己的名稱,以此來說明哪個按鈕被觸發(fā)了。
運(yùn)行程序后,按Alt+b你會發(fā)現(xiàn)彈出了button2的提示,按確定后沒再有別的提示。如下圖:
這時(shí)你再讓button2獲取焦點(diǎn)后再按Alt+b試試,你會收到button3的提示。由此可以得出,Winform是根據(jù)當(dāng)前的焦點(diǎn)位置和Tab順序來搜索下一個可觸發(fā)熱鍵的控件來處理的。要注意的是搜索的順序是從當(dāng)前焦點(diǎn)的下一個控件開始到當(dāng)前焦點(diǎn)的控件為止來搜索。
我們再做一個試驗(yàn),新建一個用戶控件,在這個用戶控件中我們添加一個按鈕,并將熱鍵設(shè)置為Alt+b。在后臺添加一個Sequence屬性,在控件的Load事件中將button的名稱上加上Sequence的值,在按鈕的Click事件中Show出按鈕的名稱以表示哪個按鈕被觸發(fā)。
用戶控制做好后我們將它添到我們的form上,放三個并依次將Sequence屬性改為1,2,3。
運(yùn)行后,我們將焦點(diǎn)定位到ucbutton1上后按Alt+b,你會發(fā)現(xiàn)提示uc&button1的消息。ucbutton2和uc&button3也是如此。
那為什么會這樣呢?是不是Usercontorl有不同的處理呢?我們再來做個實(shí)驗(yàn)吧。再新建一個用戶控件,添加3個按鈕設(shè)置相同的熱鍵,并添加后臺方法如下:
再將這個用戶控件添加到窗體中。
運(yùn)行程序后把焦點(diǎn)置于button3后按Alt+b你會收到uc2button1的提示,通過上面的結(jié)論這個是正確的。當(dāng)你把焦點(diǎn)置于uc2button1時(shí)按Alt+b你會收到uc2button2的提示,當(dāng)你把焦點(diǎn)置于uc2button3上時(shí)按Alt+b你會收到uc2button1的提示。
所以可以得出結(jié)論了。當(dāng)焦點(diǎn)進(jìn)入usercontrol之后Winform搜索下一個可觸發(fā)控件的范圍就限定在這個用戶控件內(nèi)了。現(xiàn)在也可以理解第二個實(shí)驗(yàn)為會ucbutton1~3會觸發(fā)當(dāng)前按鈕的原因了,因?yàn)樵谟脩艨丶姆秶鷥?nèi)只有一個熱鍵為Alt+b的控件。
不過我們正常情況下是不會遇到這個問題的,我是在一個form上加載多次同一個用戶控件時(shí)才遇到這個問題的。個人認(rèn)為我們不應(yīng)該依賴于Winform的這種搜索機(jī)制,而是自己多加處理來控制熱鍵的觸發(fā)邏輯,如通過Enable或Visable來保證熱鍵不沖突。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
新聞名稱:Winform對多個按鈕相同熱鍵時(shí)的處理-創(chuàng)新互聯(lián)
當(dāng)前地址:http://jinyejixie.com/article28/depojp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、建站公司、動態(tài)網(wǎng)站、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容