wpf怎么对一个textbox进行键盘操作,其他的textbox执行相同的该键盘操作

一只蛤蟆一张嘴 2016-05-26 05:41:30
wpf怎么对一个textbox进行键盘操作,其他的textbox执行相同的该键盘操作
...全文
112 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 6 楼 Libby1984 的回复:
[quote=引用 2 楼 zhang465353863 的回复:] [quote=引用 1 楼 Libby1984 的回复:] 对进行操作的那个TextBox注册TextChanged事件,然后在事件的响应函数里面对其他的TextBox的Text属性赋值。
在TextChanged时间里,怎么获取到改变的值,据我调试,只能取到TextBox里的所有Text值,怎么获取每次改变的值呢[/quote] 在TextChanged事件的事件参数TextChangedEventArgs里面可以获取到每次的改变,代码如下:
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            TextBox tb = sender as TextBox;
            TextChange change = e.Changes.ElementAt(0);
            if (change.AddedLength != 0) // 表示有增加
            {
                string addedStr = tb.Text.Substring(change.Offset, change.AddedLength); // 增加的内容
            }

            if (change.RemovedLength != 0)// 表示有删除
            {
                string deleteStr = tb.Text.Substring(change.Offset, change.RemovedLength); // 删除的内容
            }
}
[/quote] 这代码还有点问题,因为一进入TextChanged事件后,tb.Text已成为当前的text值,顾应在外面定义一个string值,来存放change之前的tb.Text值,否则进入 if (change.RemovedLength != 0)// 表示有删除 { string deleteStr = tb.Text.Substring(change.Offset, change.RemovedLength); // 删除的内容 } 这个判断时,会出错。change.Offset值>tb.Text..length
  • 打赏
  • 举报
回复
引用 2 楼 zhang465353863 的回复:
[quote=引用 1 楼 Libby1984 的回复:] 对进行操作的那个TextBox注册TextChanged事件,然后在事件的响应函数里面对其他的TextBox的Text属性赋值。
在TextChanged时间里,怎么获取到改变的值,据我调试,只能取到TextBox里的所有Text值,怎么获取每次改变的值呢[/quote] 在TextChanged事件的事件参数TextChangedEventArgs里面可以获取到每次的改变,代码如下:
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            TextBox tb = sender as TextBox;
            TextChange change = e.Changes.ElementAt(0);
            if (change.AddedLength != 0) // 表示有增加
            {
                string addedStr = tb.Text.Substring(change.Offset, change.AddedLength); // 增加的内容
            }

            if (change.RemovedLength != 0)// 表示有删除
            {
                string deleteStr = tb.Text.Substring(change.Offset, change.RemovedLength); // 删除的内容
            }
}
  • 打赏
  • 举报
回复
引用 2 楼 zhang465353863 的回复:
[quote=引用 1 楼 Libby1984 的回复:] 对进行操作的那个TextBox注册TextChanged事件,然后在事件的响应函数里面对其他的TextBox的Text属性赋值。
在TextChanged时间里,怎么获取到改变的值,据我调试,只能取到TextBox里的所有Text值,怎么获取每次改变的值呢[/quote] 你不是要将操作的那个TextBox赋给其他的TextBox么?这样他们显示的内容就一模一样了。
  • 打赏
  • 举报
回复
引用 3 楼 RubenLuLu 的回复:
你可以注册keydown事件..酱紫可以获取每次按下的键盘位置..当然 并不能知道你输入了什么字...顶多是字符和数字符号.. 另外一种 基于TextChanged事件的话,,,,你需要获取每次改变的值 就更简单了...你每次都把值记录下来呀...然后当进入事件了 你就和上次的值做比较就是了呀 如果字符比之前多 就用当前输入字符.remove掉记录的上次输入内容.... 如果比之前少...就用上次输入内容.remove掉这次输入的内容.....
这个有点用,但我更想获取到我键盘按下输入了什么字,有没有办法做到,大神,求指教
RubenLuLu 2016-05-27
  • 打赏
  • 举报
回复
你可以注册keydown事件..酱紫可以获取每次按下的键盘位置..当然 并不能知道你输入了什么字...顶多是字符和数字符号.. 另外一种 基于TextChanged事件的话,,,,你需要获取每次改变的值 就更简单了...你每次都把值记录下来呀...然后当进入事件了 你就和上次的值做比较就是了呀 如果字符比之前多 就用当前输入字符.remove掉记录的上次输入内容.... 如果比之前少...就用上次输入内容.remove掉这次输入的内容.....
  • 打赏
  • 举报
回复
引用 1 楼 Libby1984 的回复:
对进行操作的那个TextBox注册TextChanged事件,然后在事件的响应函数里面对其他的TextBox的Text属性赋值。
在TextChanged时间里,怎么获取到改变的值,据我调试,只能取到TextBox里的所有Text值,怎么获取每次改变的值呢
  • 打赏
  • 举报
回复
对进行操作的那个TextBox注册TextChanged事件,然后在事件的响应函数里面对其他的TextBox的Text属性赋值。

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧