使用键盘输入只能录入数字和点代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace Subject
{
public partial class CountForm : Form
{
public CountForm()
{
InitializeComponent();
}
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void cboCount_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void btnCount_Click(object sender, EventArgs e)
{
//如果按下计算运算符为空则提示
if (cboCount.Text.Trim()=="")
{
MessageBox.Show("请选择运算符", "提示", MessageBoxButtons.OK);
}
//定义变量并且类型转换为double类型
double countone = double.Parse(txtFirst.Text.Trim());
double counttwo = double.Parse(txtSecond.Text.Trim());
double countthree = 0;
//使用分支语句进行选择计算条件
switch (cboCount.Text.Trim())
{
case "+":
countthree = countone + counttwo;
txtThree.Text = countthree.ToString();
break;
case "-":
countthree = countone - counttwo;
txtThree.Text = countthree.ToString();
break;
case "*":
countthree = countone * counttwo;
txtThree.Text = countthree.ToString();
break;
case "/":
countthree = countone / counttwo;
txtThree.Text = countthree.ToString();
break;
}
}
private void txtFirst_TextChanged(object sender, EventArgs e)
{
}
//定义变量寻找点数量
int index = 0;
//使用时间KeyPress
private void txtFirst_KeyPress(object sender, KeyPressEventArgs e)
{
//先阻止从键盘输入键
e.Handled = true;
//键盘只能录入的键有数字、backsp、"."、
if (e.KeyChar >= 48 && e.KeyChar <= 57 || e.KeyChar == 8 || e.KeyChar
== 46)
{
//输入的字符中不存在点
if (this.txtFirst.Text.IndexOf(".")==-1)
{
//点的个数为0
index = 0;
}
//当键盘录入点的时候
if (e.KeyChar == 46)
{
//点的个数加1
index++;
//没有录入字符 if (this.txtFirst.Text.Length <= 0)
{
//阻止键盘录入
e.Handled = true;
}
//当录入的“.”个数大于1个的时候阻止键盘录入
else if (index>1)
{
e.Handled = true;
}
//除了以上两个条件其它都成立
else
{
//可以键盘录入
e.Handled = false;
}
}
//键盘录入的不是“.”时候可以录入
else
{
e.Handled = false;
}
}
}
private void txtSecond_KeyPress(object sender, KeyPressEventArgs e)
{
//先阻止从键盘输入键
e.Handled = true;
//键盘只能录入的键有数字、backsp、"."、
if (e.KeyChar >= 48 && e.KeyChar <= 57 || e.KeyChar == 8 || e.KeyChar
== 46)
{
//输入的字符中不存在点
if (this.txtSecond.Text.IndexOf(".") == -1)
{
//点的个数为0
index = 0;
}
//当键盘录入点的时候
if (e.KeyChar == 46)
{
//点的个数加1
index++;
//没有录入字符首位是“.”的时候
if (this.txtSecond.Text.Length <= 0)
{
//阻止键盘录入
e.Handled = true;
}
//当录入的“.”个数大于1个的时候阻止键盘录入
else if (index > 1)
{
e.Handled = true;
}
//除了以上两个条件其它都成立
else
{
//可以键盘录入
e.Handled = false;
}
}
//键盘录入的不是“.”时候可以录入
else
{
e.Handled = false;
}
}
}
}
}