Winform對(duì)多個(gè)按鈕相同熱鍵時(shí)的處理-創(chuàng)新互聯(lián)

在Winform中我們可以通過(guò)在按鈕的名稱上使用&來(lái)給按鈕設(shè)置熱鍵。但是如果多個(gè)按鈕有相同的熱鍵時(shí)會(huì)發(fā)生什么呢?我們來(lái)做個(gè)實(shí)驗(yàn)。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、大興網(wǎng)絡(luò)推廣、成都微信小程序、大興網(wǎng)絡(luò)營(yíng)銷、大興企業(yè)策劃、大興品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供大興建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:muchs.cn

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

Winform 對(duì)多個(gè)按鈕相同熱鍵時(shí)的處理

Winform 對(duì)多個(gè)按鈕相同熱鍵時(shí)的處理

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

Winform 對(duì)多個(gè)按鈕相同熱鍵時(shí)的處理

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

我們?cè)僮鲆粋€(gè)試驗(yàn),新建一個(gè)用戶控件,在這個(gè)用戶控件中我們添加一個(gè)按鈕,并將熱鍵設(shè)置為Alt+b。在后臺(tái)添加一個(gè)Sequence屬性,在控件的Load事件中將button的名稱上加上Sequence的值,在按鈕的Click事件中Show出按鈕的名稱以表示哪個(gè)按鈕被觸發(fā)。

Winform 對(duì)多個(gè)按鈕相同熱鍵時(shí)的處理

Winform 對(duì)多個(gè)按鈕相同熱鍵時(shí)的處理

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

Winform 對(duì)多個(gè)按鈕相同熱鍵時(shí)的處理

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

Winform 對(duì)多個(gè)按鈕相同熱鍵時(shí)的處理

那為什么會(huì)這樣呢?是不是Usercontorl有不同的處理呢?我們?cè)賮?lái)做個(gè)實(shí)驗(yàn)吧。再新建一個(gè)用戶控件,添加3個(gè)按鈕設(shè)置相同的熱鍵,并添加后臺(tái)方法如下:

Winform 對(duì)多個(gè)按鈕相同熱鍵時(shí)的處理

Winform 對(duì)多個(gè)按鈕相同熱鍵時(shí)的處理

再將這個(gè)用戶控件添加到窗體中。

Winform 對(duì)多個(gè)按鈕相同熱鍵時(shí)的處理

運(yùn)行程序后把焦點(diǎn)置于button3后按Alt+b你會(huì)收到uc2button1的提示,通過(guò)上面的結(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)了?,F(xiàn)在也可以理解第二個(gè)實(shí)驗(yàn)為會(huì)ucbutton1~3會(huì)觸發(fā)當(dāng)前按鈕的原因了,因?yàn)樵谟脩艨丶姆秶鷥?nèi)只有一個(gè)熱鍵為Alt+b的控件。

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

另外有需要云服務(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://muchs.cn/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í)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)