WPF中TextBox限制输入不起作用的问题
最近再用textbox做限制输入时遇到一个莫名其妙的问题:
首先看代码:
<TextBox Name="txtip1" Height="40" Width="60" FontSize="20" MaxLength="3" TextChanged="TextBox_TextChanged">
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
//屏蔽中文输入和粘贴输入
System.Windows.Controls.TextBox textBox = sender as System.Windows.Controls.TextBox;
if (textBox == null) return;
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);
}
}
if (ComConvert.TryInt(textBox.Text) > 255)
{
textBox.Text = textBox.Text.Remove(textBox.Text.Length - 1);
textBox.SelectionStart = textBox.Text.Length;
}
}
catch (Exception ex)
{
WinMessage.Show("输入数字有问题,请重新输入!");
}
}
感觉代码没有一点问题,可代码运行时,发现所做的限制不起作用,如果把textBox.Text = textBox.Text.Remove(textBox.Text.Length - 1); 这一句注释掉,虽然MaxLength属性又生效了,但是又不能限制数字不大于255,而且中文输入法还是可以输入。原本以为在TextChanged事件中再判断一下长度就好了,测试却发现只能生效一次,后面就又不起作用了。又尝试了KeyDown事件,发现还是一样。怎么办呢?
解决方法很简单:只要在TextBox中将InputMethod.IsInputMethodEnabled属性设为false即可,该属性还可以屏蔽中文输入法
WPF中TextBox限制输入不起作用的问题的更多相关文章
- WPF 中TextBox 增加输入检测,错误提示
先来总结下实现错误提示功能的几个要点 1:binding 的ValidationRules 2 :Validation.ErrorTemplate 首先我们在界面添加一个TextBox, Text绑定 ...
- WPF中TextBox文件拖放问题
在WPF中,当我们尝试向TextBox中拖放文件,从而获取其路径时,往往无法成功(拖放文字可以成功).造成这种原因关键是WPF的TextBox对拖放事件处理机制的不同,具体可参考这篇文章Textbox ...
- 解决WPF中TextBox文件拖放问题
在WPF中,当我们尝试向TextBox中拖放文件,从而获取其路径时,往往无法成功(拖放文字可以成功).造成这种原因关键是WPF的TextBox对拖放事件处理机制的不同,具体可参考这篇文章Textbox ...
- WPF 中textBox实现只输入数字
刚学到 通过本方法可以使文本框只能输入或复制入数字 对于数量类输入文本框比较有用 金额类只需小改动也可实现 以TextBox txtCount为例 添加TextChanged事件 代码如下 priv ...
- WPF 实现 TextBox 只能输入数字并且不能使用拷贝功能
1.代码页需要在键盘按下事件中对输入文字进行筛选,代码如下: private void tbxGoToPage_PreviewKeyDown(object sender, KeyEventArgs e ...
- wpf中textbox与textblock有什么区别
textbox是windows.form控件,textblock是WPF控件. 功能类似,但后者功能更强,也节省系统资源 wpf是基于directx技术的系统,向后兼容性更好. textblock只用 ...
- WPF中TextBox的PreviewMouseLeftButtonUp事件
当使用TextBox的PreviewMouseLeftButtonUp事件时(例如,鼠标点击进入TextBox时,清除当前的输入内容),会很意外地发现,这时候不论怎么点击都无法点击到其他控件,焦点一直 ...
- winform 中TextBox只能输入数字
textBox1.KeyPress+=TextNumber_KeyPress; private void TextNumber_KeyPress(object sender, KeyPressEven ...
- asp.net中TextBox只能输入数字的最简洁的两种方法
如下TextBox <asp:textboxonkeypress="isnum()"id="TextBox1"runat="server&quo ...
随机推荐
- Oracle12c中新建用户
运行SQLPlus,以 sysdba打开 新建用户需要 create user C##[username] identified by [password] grant dba to C##[use ...
- Android Activity整体管理和关闭工具类封装
如何彻底退出程序,在任意位置退出程序,如何管理当前的运行栈,知道activity的堆栈结构等,本文封装了一个Activity管理类,可以方便随时退出程序. /** * 应用程序Activity管理类: ...
- 总结:man, info, hwclock, cal, type, which, dirname, basename, who, which, whatis, makewhatis, hash, tty
man, info, help, date, hwclock, cal, shutdown, reboot, halt, poweroff, type, cd, which, dirname, bas ...
- CF-Mr. Kitayuta's Colorful Graph
B. Mr. Kitayuta's Colorful Graph time limit per test 1 second memory limit per test 256 megabytes in ...
- HDU-5532(LIS-nlogn)
思路: 解法一: 新的认识get+1,对于一个数组,可以通过记录他'<'和'>'来判断数组的升降序状态,这种方法只需要n的复杂度就可以解决问题,需要注意的一点是,每次删除一个结点在消失两个 ...
- Git分支学习总结
思维导图: 总结: Git分支:分为2类合计为5种分支. 第一类:主分支和开发分支. 第二类:特性分支,热补丁分支,版本分支.
- Nmon 监控 Linux 的系统性能
Nmon(得名于 Nigel 的监控器)是IBM的员工 Nigel Griffiths 为 AIX 和 Linux 系统开发的一款计算机性能系统监控工具.Nmon 可以把操作系统的统计数据展示在屏幕上 ...
- 读取xml到DataSet中去
XML如下: <?xml version="1.0" encoding="utf-8" ?> <Config> <System&g ...
- SQL Server 系统时间
getdate()函数:取得系统当前的日期和时间.返回值为datetime类型的. 用法:getdate() 例子: select getdate() as dte,dateadd(day,-1,ge ...
- Highcharts 带有数据标签曲线图表
<html> <head> <meta charset="UTF-8" /> <title>Highcharts</title ...