; 我们知道 在C#中 TextBox控件对输入字符的控制有keypress keyup 和keydown事件来使用 但大家也看到了 这几个事件对输入字符的控制都有一定的缺陷 如果 你使用中文输入法 那么很多原来你不希望输入的字符也可以输入进去 这几天做程序的时候 就碰到了这个问题 我的解决思路很简单 既然这三个事件不再起作用 那么我就使用了TextBox控件中时刻能发生的TextChanged事件 以期望在这个事件中作些东西 以达到控制字符的目的 废话就不多说了 我将控制输入字符为数字的代码粘贴出来 希望大家多指正 如果能对你有益的话 我就更happy了 private System Windows Forms TextBox textBox ; private string text; public Form () { text = textBox Text; } private void textBox _TextChanged(object sender System EventArgs e) { int len = text Length; if(len < textBox Text Length) { int index = textBox Text IndexOf(text); char c = (textBox Text Remove(index text Length))[ ]; if(c CompareTo( ) < ||c CompareTo( ) > ) { textBox Text = text; textBox SelectionStart = text Length; } } text = textBox Text; } lishixinzhi/Article/program/net/201311/15761
Private Sub Form_KeyPress(KeyAscii As Integer)
Print "Ascii: " & KeyAscii & ", 字符:" & Chr(KeyAscii)
End Sub
if (eKeyChar >= '0' && eKeyChar <= '9' || eKeyChar == '' || eKeyChar == 8)
{
eHandled = false;
return;
}
eHandled = true;
只能输入0-9和小数点。
==========
if (eKeyChar == 13)
{
}
判断是否回车
this->setAttribute(Qt::WA_KeyCompression, true);
可是用输入法输入中文后,keyPressEvent进不去
QLineEdit有textChange 信号,关联这个信号,在槽里面可以接受到字符。
没有QLineEdit啊
不用打字啊,字符串用作他用
不用控件输入啊,我只是想获得输入的字符串,不过用你的方法,是不是可以搞一个隐藏的QLineEdit让他获得焦点,不过左右方向键应该会有影响吧
又或者我接收到输入法的字符串,传递给其他窗体;
或者做一个打字练习程序,本来Label里有一些字,打出来的字对比后一样的话就改变那个字的颜色。。。
打字的过程自己实现,你要实现输入法?为什么不直接用QTextEdit呢,你的要求用QTextEdit好像全部能实现吧,接收输入法的字符串, QTextEdit有textChage信号,打字练习,你只要拿label上的字和textEdit上字符进行比较,改变下字体颜色,对的用黑色显示,错的是红色显示,这是可以实现的,你就是想插入,在输入字,在插入,textEdit多可以实现。
keypress是当键盘按下时触发,change是在文本框中的字符串变化时触发
keypress要比change先触发
而且keypress可以用来判断一些非可见字符,如:回车
ch(13)
private
sub
txtsource_keypress(keyascii
as
integer)
if
keyascii=13
then
(判断在textbox里是否按下回车键)
end
sub
keypress在调试的时候比较麻烦,注意一下
因为在KeyPress事件发生时,当前输入的字符尚未在文本框中显示出来啊,所以这个时候文本框的Text属性是不含有当前所输入的字符的(KeyPress是可以人为取消的,就是把KeyAscii参数设为0,这样当前输入字符就会作废,这也就不难理解为什么KeyPress事件发生时文本框内不含当前字符)。
可以考虑改用Change事件,这是在当前输入的字符在文本框显示出来之后才发生的事件
以上就是关于TextBox中输入字符控制的解决办法全部的内容,包括:TextBox中输入字符控制的解决办法、用VB 怎样编写下面这个程序:从键盘上输入字符时,在窗体上显示出所键入的字符和该字符的ASCII码值。、求C# KeyPress 事件中,所有e.KeyChar值的意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)