C#制作软键盘

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ZLK961543260/article/details/80353288

c#制作软键盘,先来个图。


上面这个图是制作的最终结果显示。

在制作键盘的时候,总体来说还是比较简单的,只有几个地方比较复杂一点。布局什么的我就不说了,这里所有的按键都是按钮,在网上也看到过有用图片弄得,但是感觉那种效果不是很好,可塑性太差了。下面分步骤说一下我这里是怎么做的:

1、每次按完按键之后光标显示在最上面的文本框中,这里文本框为textbox。

这个问题我在编写之前并没有发现,可当用的时候发现,如果不进行设置,在点击按钮之后,文本框中根本没有光标。这样在输入空格的时候根本就不知道输入到哪了。那么这个应该怎么做呢?

[DllImport("USER32.DLL")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);  //导入寻找windows窗体的方法
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);  //导入为windows窗体设置焦点的方法

在窗体类中加入上面代码。本程序中窗体类指的是:public partial class Edit : Form。这个下面,所有的winform窗体都会有一个类继承form类。

然后在每个按钮的点击方法中加入下列语句:

textBox.Focus();
//设置光标的位置到文本尾 
textBox.Select(textBox.Text.Length, 0);
//滚动到控件光标处 
textBox.ScrollToCaret();
这样,在点击按钮后会发现光标会在textbox中了。

2、backspace按键

在做到backspace按键的时候,怎么才能删除文本框中的内容,像我们电脑的键盘一样呢?跟1中的相似。首先在窗体类中加入下述代码:

[DllImport("USER32.DLL")]
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);  //导入模拟键盘的方法

接下来,下backspace按键的点击方法中加入下列代码:

SendKeys.Send("{BACKSPACE}");

这个是使这个按钮模拟电脑上的backspace按键的功能。可能有人会有疑惑,我怎么知道我删除的是哪里的内容。因为每次我们在按键的时候都是将光标放在了textbox的末尾,所以每次删除的都是textbox中的内容。

3、caps lock 和 shift功能

这个我实现的方法是在文本框的下面添加两个lable,caps和shift各一个,用来显示两个按键是否按下。默认设置为不可见。也就是 Label_Shift.Visible = false;

然后设置两个标志位,如下

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();
	//设置光标的位置到文本尾 
	textBox.Select(textBox.Text.Length, 0);
	//滚动到控件光标处 
	textBox.ScrollToCaret();
}

这里右shift和caps lock的是一样的。这里就不在多说了。

办法笨了一些,但是比较简单,适用于初学者,速度还可以。

效果图如下:


猜你喜欢

转载自blog.csdn.net/ZLK961543260/article/details/80353288