WPF,TextBox不能输入中文?

fg45trg 2015-11-10 02:28:34

<Window x:Class="WPF1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPF1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<TextBox TextChanged="TextBox_TextChanged"/>
</Grid>
</Window>


private void TextBox_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
TextBox tb = sender as TextBox;
tb.Text = tb.Text.Replace(" ","");
}

在上面的代码中,TextBox有一个TextChanged事件,逻辑就是去掉空格,当在文本框中输入英文时,确实不能输入空格了,达到了理想的效果。可这样造成的结果是:TextBox不能输入中文了
请问,其中的原因何在?如何处理?
...全文
427 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fg45trg 2015-11-12
  • 打赏
  • 举报
回复
没有解决办法吗?
南天空 2015-11-11
  • 打赏
  • 举报
回复
textbox的默认编码格式有设置吗?改成default试试
秋的红果实 2015-11-11
  • 打赏
  • 举报
回复
VS2008也有时有这种情况,有次好像设置属性什么的,怎么也输不进汉字,最后在记事本写好,复制进去
fg45trg 2015-11-11
  • 打赏
  • 举报
回复
引用 9 楼 hjq624779687 的回复:
我这边也遇到了同样一个问题,在所编系统中不能输入汉字,具体就是在切换输入法的时候感觉输入法没有激活的那种感觉(输入法的那个框没有弹出来),用的是telerik的RadAutoCompleteBox控件。。。
我的搜狗输入法框是弹出来了的,搜狗输入法打中文的时候,先是一个空格,然后才在框中先是字,出空格,就出事
夏天的枫 2015-11-11
  • 打赏
  • 举报
回复
我这边也遇到了同样一个问题,在所编系统中不能输入汉字,具体就是在切换输入法的时候感觉输入法没有激活的那种感觉(输入法的那个框没有弹出来),用的是telerik的RadAutoCompleteBox控件。。。
fg45trg 2015-11-11
  • 打赏
  • 举报
回复
有人知道吗??
fg45trg 2015-11-11
  • 打赏
  • 举报
回复
引用 6 楼 guonan198811 的回复:
textbox的默认编码格式有设置吗?改成default试试
textbox的默认编码格式?怎么设置?
fg45trg 2015-11-10
  • 打赏
  • 举报
回复
有测试了一下。用微软拼音输入法没有问题,搜狗输入法,则不能输入汉字
fg45trg 2015-11-10
  • 打赏
  • 举报
回复
如果是Winform,则没有这个情况。这是为什么呢?
fg45trg 2015-11-10
  • 打赏
  • 举报
回复
引用 1 楼 wyd1520 的回复:
不是不能输入,这是是无限递归了。。 应改成这样 private void TextBox_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e) { TextBox tb = sender as TextBox; tb.TextChanged-=TextBox_TextChanged; tb.Text = tb.Text.Replace(" ",""); tb.TextChanged+=TextBox_TextChanged; } 要这样
我按照你这样的代码修改了,结果呢,还是不能输入中文。。。。。
exception92 2015-11-10
  • 打赏
  • 举报
回复
在它的 KeyUp 事件中处理最好。 如果 按下的是回车 就 阻止 事件传播
本拉灯 2015-11-10
  • 打赏
  • 举报
回复
不是不能输入,这是是无限递归了。。 应改成这样 private void TextBox_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e) { TextBox tb = sender as TextBox; tb.TextChanged-=TextBox_TextChanged; tb.Text = tb.Text.Replace(" ",""); tb.TextChanged+=TextBox_TextChanged; } 要这样
在Windows系统中,notepad.exe(记事本)是一个“经典的”、“简洁的”文本编辑器。这个软件,没有华丽的外观,也没有繁杂的功能,仅仅是一个文本编辑小软件。虽然经过Windows系统数十年的变换,但它却保持着永恒姿态,数十年来几乎不曾改变过。曾经,VS中的经典DEMO中,就有它的身影,一个新建的项目,就藏有一个新建的“记事本”。然而,在WPF的项目中,“记事本”却消失的无影无踪,也许是很容易实现,也许是为了革新,而不愿再传承“经典”。确实,使用WPF技术再次让“记事本”复活,确实也是一件非常容易的事情。但是,如果,使用WPF技术,再搭配当下非常流行的MVVM模式呢?复活“记事本”的难度却陡然上升至很多WPF程序员为之默默叹气。而,MVVM模式是掌握WPF的最顶级技术,MVVM模式拥有的无尽的优势,让WPF相对于过往的编程模式来说,是一种革命性的创新,从而也成为大中型WPF项目中必须的模式。但,学习难度。。。。。。在这个《WPF记事本开发详解》的课程中,赵老师带领你在WPF中,从零开始一步步构建MVVM模式,直到让你亲自以WPF+MVVM的方式,让这个经典的“记事本”软件从你的手中“复活”。在课程中,赵老师会详细讲解WPF和MVVM中的各种技巧,让你从此爱上WPF+MVVM编程。

110,566

社区成员

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

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

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