如何让wpf 中的textbox只能输入整型或浮点型呢??
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让wpf 中的textbox只能输入整型或浮点型呢??相关的知识,希望对你有一定的参考价值。
rt
参考技术A 要吗用正则表达式,要不嫌麻烦就用代码控制:bool isNotnum = false;
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
((TextBox)sender).ImeMode = ImeMode.Disable;
this.isNotnum = false;
((TextBox)sender).Tag = ((TextBox)sender).Text;
//允许输入数字、小数点和删除键
if((e.KeyChar<48||e.KeyChar>57) && e.KeyChar!=8&&e.KeyChar!=(char)('.'))
e.Handled = true;
this.isNotnum = true;
//小数点只能输入一次
if(e.KeyChar ==(char)('.')&&((TextBox)sender).Text.IndexOf('.')!=-1)
e.Handled = true;
//第一位不能为小数点
if (e.KeyChar == (char)('.') && ((TextBox)sender).Text == "")
e.Handled = true;
//第一位是0,第二位必须为小数点
if (e.KeyChar != (char)('.') && ((TextBox)sender).Text == "0")
e.Handled = true;
if(e.KeyChar == 8)
e.Handled = false;
//只允许输入数字
if (e.KeyChar >= 0x4e00 && e.KeyChar <= 0x9fa5)
this.isNotnum = true;
private void textBox1_KeyUp(object sender, KeyEventArgs e)
if (this.isNotnum && ((TextBox)sender).Text != ((TextBox)sender).Text.ToString())
MessageBox.Show("只能输入数字!!!", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Question);
((TextBox)sender).Text = ((TextBox)sender).Tag.ToString();
((TextBox)sender).SelectionStart = ((TextBox)sender).Text.Length;
this.isNotnum = false;
return;
本回答被提问者采纳 参考技术B 正则 参考技术C [-]0,1\d0,10 \d0,16 这两个就行了 中间是或的关系啊 参考技术D 加正则验证吧
wpf textbox允许输入多少
(一)这今天做wpf项目的时候,有关TextBox输入验证的问题。关于验证(1)输入的时候做到有效数据的有效输入
(2)输入后再操作时候做检查,并弹出对话框提示。
我跟倾向于在输入的时候做到限制的有效输入
在项目中碰到的问题。
(1)输入框只能输入整数
(2)输入框输入的含小数位数最大位数为4位
(二)下考了如下链接。
(1)大气象学习园地的
Silverlight限制TextBox只能输入整数或者小数
(2)yingql的
Silverlight开发中的疑难杂症-控件设计篇-如何实现一个NumericBox(上)
Silverlight开发中的疑难杂症-控件设计篇-如何实现一个NumericBox(下)
Silverlight开发中的疑难杂症-如何通过代码附加Behavior
(三)基于TextBox的自定义控件NumericBox
注意点,由于涉及到Behavior,需要引用Blend中System.Windows.Interactivity.dll
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Interactivity;
namespace NumericBoxDemo
/// <summary>
/// NumericBox功能设计
/// 只能输入0-9的数字和至多一个小数点;
///能够屏蔽通过非正常途径的不正确输入(输入法,粘贴等);
///能够控制小数点后的最大位数,超出位数则无法继续输入;
///能够选择当小数点数位数不足时是否补0;
///去除开头部分多余的0(为方便处理,当在开头部分输入0时,自动在其后添加一个小数点);
///由于只能输入一个小数点,当在已有的小数点前再次按下小数点,能够跳过小数点;
/// </summary> 参考技术A ML代码
02
03 < TextBoxHeight="23" HorizontalAlignment="Left" Margin="100,5,0,0" Name="textBox1"VerticalAlignment="Top" Width="120"
04 DataObject.Pasting="textBox1_Pasting"PreviewKeyDown="textBox1_PreviewKeyDown" InputMethod.IsInputMethodEnabled="False"
05 PreviewTextInput="textBox1_PreviewTextInput"
06 / >
07
08
09
10
11
12 cs代码
13
14
15
16 //检测粘贴
17 private void textBox1_Pasting(object sender, DataObjectPastingEventArgs e)
18
19 if (e.DataObject.GetDataPresent(typeof(String)))
20
21 String text = (String)e.DataObject.GetData(typeof(String));
22 if (!isNumberic(text))
23 e.CancelCommand();
24
25 else e.CancelCommand();
26
27
28
29
30 private void textBox1_PreviewKeyDown(object sender, KeyEventArgs e)
31
32 if (e.Key == Key.Space)
33 e.Handled = true;
34
35
36
37
38 private void textBox1_PreviewTextInput(object sender, TextCompositionEventArgs e)
39
40 if (!isNumberic(e.Text))
以上是关于如何让wpf 中的textbox只能输入整型或浮点型呢??的主要内容,如果未能解决你的问题,请参考以下文章