C#制作软键盘
本文下載地址:https://pan.baidu.com/s/1ubpeTwuQvAPNlC4QLDpp8w
提取碼:1234
c#制作軟鍵盤,先來個圖。
上面這個圖是制作的最終結(jié)果顯示。
在制作鍵盤的時候,總體來說還是比較簡單的,只有幾個地方比較復(fù)雜一點。布局什么的我就不說了,這里所有的按鍵都是按鈕,在網(wǎng)上也看到過有用圖片弄得,但是感覺那種效果不是很好,可塑性太差了。下面分步驟說一下我這里是怎么做的:
1、每次按完按鍵之后光標(biāo)顯示在最上面的文本框中,這里文本框為textbox。
這個問題我在編寫之前并沒有發(fā)現(xiàn),可當(dāng)用的時候發(fā)現(xiàn),如果不進(jìn)行設(shè)置,在點擊按鈕之后,文本框中根本沒有光標(biāo)。這樣在輸入空格的時候根本就不知道輸入到哪了。那么這個應(yīng)該怎么做呢?
[DllImport("USER32.DLL")] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); //導(dǎo)入尋找windows窗體的方法 [DllImport("USER32.DLL")] public static extern bool SetForegroundWindow(IntPtr hWnd); //導(dǎo)入為windows窗體設(shè)置焦點的方法在窗體類中加入上面代碼。本程序中窗體類指的是:public partial class Edit : Form。這個下面,所有的winform窗體都會有一個類繼承form類。
然后在每個按鈕的點擊方法中加入下列語句:
textBox.Focus(); //設(shè)置光標(biāo)的位置到文本尾 textBox.Select(textBox.Text.Length, 0); //滾動到控件光標(biāo)處 textBox.ScrollToCaret();這樣,在點擊按鈕后會發(fā)現(xiàn)光標(biāo)會在textbox中了。
2、backspace按鍵
在做到backspace按鍵的時候,怎么才能刪除文本框中的內(nèi)容,像我們電腦的鍵盤一樣呢?跟1中的相似。首先在窗體類中加入下述代碼:
[DllImport("USER32.DLL")] public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); //導(dǎo)入模擬鍵盤的方法接下來,下backspace按鍵的點擊方法中加入下列代碼:
SendKeys.Send("{BACKSPACE}");這個是使這個按鈕模擬電腦上的backspace按鍵的功能。可能有人會有疑惑,我怎么知道我刪除的是哪里的內(nèi)容。因為每次我們在按鍵的時候都是將光標(biāo)放在了textbox的末尾,所以每次刪除的都是textbox中的內(nèi)容。
3、caps lock 和 shift功能
這個我實現(xiàn)的方法是在文本框的下面添加兩個lable,caps和shift各一個,用來顯示兩個按鍵是否按下。默認(rèn)設(shè)置為不可見。也就是?Label_Shift.Visible = false;
然后設(shè)置兩個標(biāo)志位,如下
private bool Shift = false;
private bool Caps_Lock = false;
這里舉一個例子,shift按鈕:代碼如下:
private void button_shift_Click(object sender, EventArgs e) {switch (Shift){case false:{Label_Shift.Visible = true;Shift = true;break;}case true:{Label_Shift.Visible = false;Shift = false;break;}}textBox.Focus();//設(shè)置光標(biāo)的位置到文本尾 textBox.Select(textBox.Text.Length, 0);//滾動到控件光標(biāo)處 textBox.ScrollToCaret(); }這里右shift和caps lock的是一樣的。這里就不在多說了。
辦法笨了一些,但是比較簡單,適用于初學(xué)者,速度還可以。
效果圖如下:
總結(jié)
- 上一篇: 万达商业再递招股书:上半年派息35亿 腾
- 下一篇: 反射机制-Reflected