求助RichTextBox如果在changeD事件中引用了text属性,第五玛丢失的问题 不会出现你说的情况啊,我用的搜狗五笔,用别的输入法也正常。你看看richTextBox的ImeMode属性是什么 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该不是这个问题吧你不加这个,打字没问题?你字打上去之前,text值都没有变化,也不会执行changed事件 确实有这个问题的,就是打字的时候你大MMGD 是册 接着我再想打一个一 那么我会在键盘里面输入mmgdG ,这样子就丢失了一个g得重复按一次,一定要在上面的事件中才会有的,其他不会有这个问题,谢谢。麻烦各位大神帮忙看看,这个问题,到目前还没得到解决。 应该跟你用的输入法有关如果用拼音输入法,不按空格是不出字的而你用五笔输入法,输入法判断mmgd就已经是个字了,你再打g,它会先出个"册",然后再出"一"而出了一个字之后,你的控件执行方法去了,而不响应你的后续输入了 不行用timer呗,100ms执行一次,没人能1秒打10个字上去吧,只是为了看的话,足够了 不行用timer呗,100ms执行一次,没人能1秒打10个字上去吧,只是为了看的话,足够了。这个方法还是不行,因为我放了差不多有6个richtexbox控件,所以还是需要时时获得的,部分代码如下,不知道怎么样才可以改写成timer这种方法。 RichTextBox richTextBox = sender as RichTextBox; if (richTextBox != null) try { if (richTextBox.Text.Contains(" ")) { richTextBox.Text = richTextBox.Text.Replace(" ", "\u3000"); } string text = richTextBox.Text; for (int i = 0; i < text.Length; i++) { if (text[i] != '\u3000') { int num = (int)text[i]; if (num > 40869 || num < 19968) { char c = (char)num; text = text.Replace(string.Concat(c), ""); i = 0; } } } richTextBox.Text = text; richTextBox.Select(0, richTextBox.TextLength); richTextBox.SelectionBackColor = Color.Black; richTextBox.SelectionColor = Color.White; richTextBox.Select(richTextBox.TextLength, 0); this.lastColoredIndex = -1; if (richTextBox.Text.Length > 33) { string text2 = richTextBox.Text.Substring(0, 33); richTextBox.Text = text2; this.lastColoredIndex = -1; } richTextBox.SelectionStart = richTextBox.Text.Length; this.RefreshUI(); if (richTextBox.Text.Length == 33) { if (richTextBox == this.tRTB1 && this.newlineflag[0]) { return; } if (richTextBox == this.tRTB2 && this.newlineflag[1]) { return; } if (richTextBox == this.tRTB3 && this.newlineflag[2]) { return; } if (richTextBox == this.tRTB4 && this.newlineflag[3]) { return; } if (richTextBox == this.tRTB5 && this.newlineflag[4]) { return; } if (richTextBox == this.tRTB6 && this.newlineflag[5]) { return; } this.newlineflag[this.currentline - 1] = true; this.currentline++; this.lastColoredIndex = -1; RichTextBox richTextBox2 = null; 如果套上timer事件中,那么上面的richtextbox就是为空,所以就无法对打字进行判断了。另外如果要时时得到这个richtexbox又要写上上面的方法才可以。textchanged事件获得才行。 【讨论】.Net版本的远程桌面 设计窗口打开错误 NPetshop应该如何设置配置文件 这个句子有啥问题呀 请问怎么自动获取VSS中的某个项目某个目录的文件? 求救: C#控制台程序转为WinForm应用程序 如何用c#编程设置ie中的代理? 我编的一个学习小程序,需要用到 Webbrowser显示网页,但是显示乱码 正则判断是URL或是搜索串? Winform如何拖动左边框、上边框以调整窗体尺寸?FormBorderStyle=none 高分求助:winform 从datatable 动态添加菜单 WPF 不选中listViewitem最右边空白列
你不加这个,打字没问题?
你字打上去之前,text值都没有变化,也不会执行changed事件
而出了一个字之后,你的控件执行方法去了,而不响应你的后续输入了
RichTextBox richTextBox = sender as RichTextBox;
if (richTextBox != null)
try
{ if (richTextBox.Text.Contains(" "))
{
richTextBox.Text = richTextBox.Text.Replace(" ", "\u3000");
}
string text = richTextBox.Text;
for (int i = 0; i < text.Length; i++)
{
if (text[i] != '\u3000')
{
int num = (int)text[i];
if (num > 40869 || num < 19968)
{
char c = (char)num;
text = text.Replace(string.Concat(c), "");
i = 0;
}
}
}
richTextBox.Text = text;
richTextBox.Select(0, richTextBox.TextLength);
richTextBox.SelectionBackColor = Color.Black;
richTextBox.SelectionColor = Color.White;
richTextBox.Select(richTextBox.TextLength, 0);
this.lastColoredIndex = -1;
if (richTextBox.Text.Length > 33)
{
string text2 = richTextBox.Text.Substring(0, 33);
richTextBox.Text = text2;
this.lastColoredIndex = -1;
}
richTextBox.SelectionStart = richTextBox.Text.Length;
this.RefreshUI();
if (richTextBox.Text.Length == 33)
{
if (richTextBox == this.tRTB1 && this.newlineflag[0])
{
return;
}
if (richTextBox == this.tRTB2 && this.newlineflag[1])
{
return;
}
if (richTextBox == this.tRTB3 && this.newlineflag[2])
{
return;
}
if (richTextBox == this.tRTB4 && this.newlineflag[3])
{
return;
}
if (richTextBox == this.tRTB5 && this.newlineflag[4])
{
return;
}
if (richTextBox == this.tRTB6 && this.newlineflag[5])
{
return;
}
this.newlineflag[this.currentline - 1] = true;
this.currentline++; this.lastColoredIndex = -1;
RichTextBox richTextBox2 = null;
如果套上timer事件中,那么上面的richtextbox就是为空,所以就无法对打字进行判断了。另外如果要时时得到这个richtexbox又要写上上面的方法才可以。textchanged事件获得才行。