在WPF中,有没有一个只能输入数字的控件啊!

目前没有吧,你可以有两种选择:

1.重写控件,截获消息

2.为TextBox加事件,屏蔽按键

以下给出第二种方案:

为TextBox加两个事件:TextChanged和KeyDown事件,具体如下:

KeyDown事件:

private void TextBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)

{

  TextBox txt = sender as TextBox;

//屏蔽非法按键

  if ((e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) || e.Key == Key.Decimal)

  {

    if (txt.Text.Contains(".") && e.Key == Key.Decimal)

    {

      e.Handled = true;

      return;

    }

    e.Handled = false;

  }

  else if (((e.Key >= Key.D0 && e.Key <= Key.D9) || e.Key == Key.OemPeriod) && e.KeyboardDevice.Modifiers !=        ModifierKeys.Shift)

  {

    if (txt.Text.Contains(".") && e.Key == Key.OemPeriod)

    {

      e.Handled = true;

      return;

    }

    e.Handled = false;

  }

  else

  {  e.Handled = true;  }

}

TextChanged事件:

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)

{

  //屏蔽中文输入和非法字符粘贴输入

  TextBox textBox = sender as TextBox;

  TextChange[] change = new TextChange[e.Changes.Count];

  e.Changes.CopyTo(change, 0);

int offset = change[0].Offset;

  if (change[0].AddedLength > 0)

  {

    double num = 0;

    if (!Double.TryParse(textBox.Text, out num))

    {

      textBox.Text = textBox.Text.Remove(offset, change[0].AddedLength);

      textBox.Select(offset, 0);

    }

  }

}

时间: 2024-08-09 00:15:14

在WPF中,有没有一个只能输入数字的控件啊!的相关文章

vue+element 中 el-input框 限制 只能输入数字及几位小数(自定义)和输入框之键盘

<!-- 下布转数 --> <el-table-column align="right" width="87px"> <template slot="header" slot-scope="scope"> <span class="sort-table-header">下布转数</span> </template> <templa

购物车中的input输入框只能输入数字和输入为0的时候默认为1

<input type="text" value="1" onkeyup="value=(parseInt((value=value.replace(/\D/g,''))==''||parseInt((value=value.replace(/\D/g,''))==0)?'1':value,10))"> 原文地址:https://www.cnblogs.com/yuanyanbk/p/8136840.html

HTML中这能输入数字的控件

可以用: <input type="number" id="MinHours" name="MinHours"value[email protected] text[email protected] /> 原文地址:https://www.cnblogs.com/tiecaiying/p/8378113.html

C# 文本框禁止复制粘贴、只能输入数字

TextBox 禁止复制粘贴 ShortcutsEnabled =false TextBox http://jingyan.baidu.com/article/ca41422fddd5201eae99ed28.html 在按键方法中添加文本框只能输入数字的代码. C#如何限制Textbox文本框只能输入数字 . 新增日志输出方法output,可以将过程日志进行输出. C#如何限制Textbox文本框只能输入数字 .

html中radio单选和文本框限制只能输入数字的解决方案

一.当html中存在多个radio单选按钮时将所有的单选按钮name属性设置为一样,就可实现每次只选中一个的效果. 二.限制文本框只能输入数字,代码如下: $(function(){ $(":radio.dian").click(function(){ //单击radio后移除所有的边框样式 $("label").removeClass("bank_border"); if(this.checked){//当radio选中时设置边框样式 $(th

wpf 限制textbox只能输入数字及特殊键

原文:wpf 限制textbox只能输入数字及特殊键 使用vs2015进行wpf设计时,发现限制输入数字时,Keydown事件无法检测到空格的输入,后经过查资料调试,发现PreviewKeyDown可以满足检测输入所有值合法性的要求,我的textbox输入框中只允许输入(大小键盘中)的数字0-9,以及删除回车,左右方向键,tab键,删除键,下面代码为限制 private void MinSpaceTextBox_PreviewKeyDown(object sender, KeyEventArgs

控制input标签中只能输入数字以及小数点后两位

js 代码如下: /* 控制input标签中只能输入数字 和小数点后两位 */ function checkNum(obj) { //检查是否是非数字值 if (isNaN(obj.value)) { obj.value = ""; } if (obj != null) { //检查小数点后是否对于两位http://blog.csdn.net/shanzhizi if (obj.value.toString().split(".").length > 1 &a

执行这些代码, Edit1只能输入数字,小数点和负号,负号和小数点只能输入一个,负号必须在最前,粘贴的数字必须完全正确.

执行这些代码, Edit1只能输入数字,小数点和负号,负号和小数点只能输入一个,负号必须在最前,粘贴的数字必须完全正确. type TForm1 = class(TForm) Edit1: TEdit; procedure FormCreate(Sender: TObject); private Edit1OldProc: TWndMethod; procedure Edit1NewProc(var Message: TMessage); public { Public declarations

html或者php中 input框限制只能输入正整数,逻辑与和或运算

有时需要限制文本框输入内容的类型,本节分享下正则表达式限制文本框只能输入数字.小数点.英文字母.汉字等代码. 例如,输入大于0的正整数 代码如下: <input onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}" onafterpaste="if(this.value.len