如何让wpf 中的textbox只能输入整型或浮点型呢??
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让wpf 中的textbox只能输入整型或浮点型呢??相关的知识,希望对你有一定的参考价值。
没必要,WPF最好使用Validator进行验证,或者也可以在确认的时候检查一下即可。如果执意要这样做,也给你段代码:
private void TextBoxNumbersOnly(object sender, TextChangedEventArgs e)
var box = (TextBox)sender;
var start = box.SelectionStart;
for (var i = 0; i < box.Text.Length; i++) if (!char.IsNumber(box.Text[i]))
if (i < start) start--;
box.Text = box.Text.Remove(i, 1);
i--;
box.Select(start, 0);
参考技术A privatevoid tbCount_KeyDown(object sender, KeyEventArgs e)
TextBox txt = sender as TextBox;
//屏蔽非法按键
if ((e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) || e.Key == Key.Decimal || e.Key.ToString() =="Tab")
if (txt.Text.Contains(".") && e.Key == Key.Decimal)
e.Handled =true;
return;
e.Handled =false;
elseif (((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;
privatevoid 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);
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只能输入整型或浮点型呢??的主要内容,如果未能解决你的问题,请参考以下文章