/*********************************************************************** * Copyright(c) 2010 XX公司 * CLR 版本: 2.0.50727.42 * 文 件 名:InputValidateInterFace.cs * 创 建 人:FK * 创建日期:2010-11-29 13:20:52 * 修 改 人: * 修改日期: * 备注描述:输入限制 ************************************************************************/ using System; using System.Windows.Forms; namespace ScreenShow { public sealed class InputValidate { #region 输入控制--限制只能输入浮点数、数字字符、整数 /// <summary> /// 限制只能输入浮点数和负号 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void InputDecimalMinus(object sender, KeyPressEventArgs e) { //限制只能输入浮点数 //如果不是0~9(48~57)、.(46)、Enter(13)、BreakSpace(8),不处理 if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar != 46 && e.KeyChar != 22 && e.KeyChar != 3 && e.KeyChar != 24 && e.KeyChar != 26 && e.KeyChar != 45) { e.Handled = true; } //允许输入负号 if (e.KeyChar == 45 && (((TextBox)sender).SelectionStart != 0 || ((TextBox)sender).Text.IndexOf("-") >= 0)) { e.Handled = true; } //如果是小数点,则判断是否已经存在,如果存在,则不拒绝当前输入 if (e.KeyChar == 46 && (((TextBox)sender).SelectionStart == 0 || ((TextBox)sender).Text.IndexOf(".") >= 0)) { e.Handled = true; } //如果是回车键,则进行焦点转移 if (e.KeyChar != 13) return; SendKeys.Send("{TAB}"); e.Handled = true; } /// <summary> /// 限制只能输入浮点数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void InputDecimal(object sender, KeyPressEventArgs e) { //限制只能输入浮点数 //如果不是0~9(48~57)、.(46)、Enter(13)、BreakSpace(8),不处理 if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar != 46 && e.KeyChar != 22 && e.KeyChar != 3 && e.KeyChar != 24 && e.KeyChar != 26) { e.Handled = true; } //如果是小数点,则判断是否已经存在,如果存在,则不拒绝当前输入 if (e.KeyChar == 46 && (((TextBox)sender).SelectionStart == 0 || ((TextBox)sender).Text.IndexOf(".") >= 0)) { e.Handled = true; } //如果是回车键,则进行焦点转移 if (e.KeyChar != 13) return; SendKeys.Send("{TAB}"); e.Handled = true; } /// <summary> /// 只能输入数字字母 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void InputAllCode(object sender, KeyPressEventArgs e) {//只能输入数字字母 backspace 8,ctrl+v 22,ctrl+c 3,ctrl+x 24,ctrl+z 26 if (e.KeyChar != 8 && !Char.IsDigit(e.KeyChar) && e.KeyChar != 13 && !((e.KeyChar >= 'a' && e.KeyChar <= 'z') || (e.KeyChar >= 'A' && e.KeyChar <= 'Z')) && e.KeyChar != 22 && e.KeyChar != 3 && e.KeyChar != 24 && e.KeyChar != 26) { e.Handled = true; } else { if (e.KeyChar == 13) { SendKeys.Send("{TAB}"); e.Handled = true; } } } /// <summary> /// 限制只能输入整数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void InputInteger(object sender, KeyPressEventArgs e) {//限制只能输入整数 if (e.KeyChar != 8 && (e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 13 && e.KeyChar != 22 && e.KeyChar != 3 && e.KeyChar != 24 && e.KeyChar != 26) { e.Handled = true; } else { //如果第一位输入0,则不接收 if (e.KeyChar == 48 && (((TextBox)sender).SelectionStart == 0)) e.Handled = true; //如果是回车键,则按tab序进行跳转 if (e.KeyChar == 13) { SendKeys.Send("{TAB}"); e.Handled = true; } } } #endregion 输入控制--限制只能输入浮点数、数字字符、整数 } }
调用
private void txtGoodsCount_KeyPress(object sender, KeyPressEventArgs e) { try { inputValidate.InputInteger(sender, e); } catch (Exception ex) { LogHelper.LogException(ex); MsgBox.Error("系统出错!"); } }