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