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不能输入中文了
请问,其中的原因何在?如何处理?
...全文
504 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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; } 要这样
我按照你这样的代码修改了,结果呢,还是不能输入中文。。。。。
  • 打赏
  • 举报
回复
在它的 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; } 要这样

111,097

社区成员

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

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

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