中文输入时候多次触发KeyPress事件
o1n 2006-12-26 04:26:14 问题描述:
1我做了一个类似下拉框的控件,包括文本框和下拉的一个大的文本输入区域
2要实现当文本框检测到有录入时候,就自动弹出下拉框,并且把录入的字符自动录入到下拉的文本录入区域
3问题是:现在我输入英文,例如我输入“a”,自动下拉框就打开了,下拉的文本输入区域获取字符“a”,并且光标在“a”之后。如果我在文本框连续的录入“abcdef”,下拉框也自动打开,并且获取字符“abcdef”,光标在f之后。但是,如果我用中文输入法,我在文本框录入“中国”,按空格确认选择,则在下拉的区域获取的字符是“中国国”,光标在最后的“国”之后,如果我输入“中”,则下拉区域获取的是“中中”
4 我现在用的是C#,输入法紫光和智能ABC,另外,紫光录入“中国”,如果用小键盘区的数字键选择,则下拉文本区获取对应的数字,无法获取中文,
private void cddcMain_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar != 27)
{
e.Handled = true;
this.cddcMain.Value = "";
this.cddcMain.OpenDropDown();
string strText = "";
if(e.KeyChar != 8)//Back键
{
if(e.KeyChar == 13) //回车
strText = "";
else
strText = e.KeyChar.ToString();
}
this.frmTextEdit.TSTextMain.Focus();
this.frmTextEdit.TSTextMain.AppendText(strText);
this.frmTextEdit.TSTextMain.SelectAll();
this.frmTextEdit.TSTextMain.SelectionStart = this.frmTextEdit.TSTextMain.SelectionLength;
}
}