C# WinForm中實(shí)現(xiàn)快捷鍵自定義設(shè)置實(shí)例
本文源碼下載:http://xiazai.jb51.net/201501/tools/cs-key-setting.rar
項(xiàng)目開(kāi)發(fā)過(guò)程中,需要實(shí)現(xiàn)類(lèi)似有道詞典的軟件設(shè)置中的自定義快捷鍵功能,如下圖所示:
當(dāng)我們相繼按下Ctrl+Alt+M的時(shí)候,軟件就會(huì)自動(dòng)將快捷鍵顯示在文本框中。
最終的效果如下圖所示:
核心代碼如下所示:
private void keyDown(object sender, KeyEventArgs e)
{
StringBuilder keyValue = new StringBuilder();
keyValue.Length = 0;
keyValue.Append("");
if (e.Modifiers != 0)
{
if (e.Control)
keyValue.Append("Ctrl + ");
if (e.Alt)
keyValue.Append("Alt + ");
if (e.Shift)
keyValue.Append("Shift + ");
}
if ((e.KeyValue >= 33 && e.KeyValue <= 40) ||
(e.KeyValue >= 65 && e.KeyValue <= 90) || //a-z/A-Z
(e.KeyValue >= 112 && e.KeyValue <= 123)) //F1-F12
{
keyValue.Append(e.KeyCode);
}
else if ((e.KeyValue >= 48 && e.KeyValue <= 57)) //0-9
{
keyValue.Append(e.KeyCode.ToString().Substring(1));
}
this.ActiveControl.Text = "";
//設(shè)置當(dāng)前活動(dòng)控件的文本內(nèi)容
this.ActiveControl.Text = keyValue.ToString();
}
private void keyUp(object sender, KeyEventArgs e)
{
string str = this.ActiveControl.Text.TrimEnd();
int len = str.Length;
if (len >= 1 && str.Substring(str.Length - 1) == "+")
{
this.ActiveControl.Text = "";
}
}
e.KeyValue和字符的對(duì)應(yīng)關(guān)系
字符 | e.KeyValue |
a-z|A-Z | 65-90 |
F1-F12 | 112-123 |
0-9 | 48-57 |
PageUp | 33 |
PageDown | 34 |
End | 35 |
Home | 36 |
左(←) | 37 |
上( ↑ ) | 38 |
右(→) | 39 |
下( ↓ ) | 40 |
接著,為textbox控件分別設(shè)置_KeyDown和_KeyUp事件,并在其中調(diào)用以上2個(gè)核心函數(shù)。
如下所示:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
keyDown(sender, e);
}
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
keyUp(sender, e);
}
相關(guān)文章
php調(diào)用淘寶開(kāi)放API實(shí)現(xiàn)根據(jù)賣(mài)家昵稱(chēng)獲取賣(mài)家店鋪ID的方法
這篇文章主要介紹了php調(diào)用淘寶開(kāi)放API實(shí)現(xiàn)根據(jù)賣(mài)家昵稱(chēng)獲取賣(mài)家店鋪ID的方法,實(shí)例分析了php調(diào)用淘寶API查詢(xún)店鋪信息的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07php將會(huì)員數(shù)據(jù)導(dǎo)入到ucenter的代碼
php下把會(huì)員數(shù)據(jù)導(dǎo)入到ucenter代碼,需要的朋友可以參考下。2010-07-07php設(shè)置靜態(tài)內(nèi)容緩存時(shí)間的方法
這篇文章主要介紹了php設(shè)置靜態(tài)內(nèi)容緩存時(shí)間的方法,涉及針對(duì)header函數(shù)中參數(shù)的應(yīng)用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12PHP進(jìn)階學(xué)習(xí)之反射基本概念與用法分析
這篇文章主要介紹了PHP進(jìn)階學(xué)習(xí)之反射基本概念與用法,結(jié)合實(shí)例形式分析了php反射的概念、原理基本用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-06-06利用PHPExcel實(shí)現(xiàn)Excel文件的寫(xiě)入和讀取
本篇文章主要介紹了利用PHPExcel實(shí)現(xiàn)Excel文件的寫(xiě)入和讀取的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-04-04用php實(shí)現(xiàn)的下載css文件中的圖片的代碼
非常有創(chuàng)意的利用php獲取css中圖片地址并實(shí)現(xiàn)下載的代碼。2010-02-02php操作mongodb封裝類(lèi)與用法實(shí)例
這篇文章主要介紹了php操作mongodb封裝類(lèi)與用法,結(jié)合具體實(shí)例形式分析了php定義的MongoDB操作封裝類(lèi)與相關(guān)的類(lèi)實(shí)例化、查詢(xún)、更新等使用技巧,需要的朋友可以參考下2018-09-09