使用vb.net或c#的Textbox_KeyPress事件

我的要求是我正在尝试为我的母语开发一个文本编辑器。 那就是我正在尝试使用unicode字符开发泰米尔语文本编辑器。 当我按下键盘上的键(英文字符)时,我想要替换两个字符,如“&H0b95”“&H0bcd”。 如何实现这个概念? 是否有可能。
按键事件时的示例代码

e.keychar=chrw("&H0b95") & chrw("&H0bcd") 'This code is not Execute Becuase it get Only One Character' TextBox1.Text=chrw("&H0b95") & chrw("&H0bcd") 

我已经完成了这个概念,但唯一的问题是光标位置是滚动,当我将字符分配给文本框时,时间选择开始为零,因此光标转到第一个位置。 在第二行之后,我将光标位置设置为光标到文本末尾的文本的长度。

所以问题是当我一直按下一个键时光标上下移动。 如何解决这个问题呢。 任何机构都可以给我一个想法。

点击这里 ! 查看泰米尔语Unicode字符表。

更新光标位置时,需要停止渲染文本框。 我以前用控制台应用程序做过类似的事情。 但是在这里找不到代码来引用它。

您需要更新SelectionStart属性并使用插入的新文本的大小增加其长度。 就像是:

 int curPos = txtEditor.SelectionStart; if (e.KeyChar == 'k') { txtEditor.Text=txtEditor.Text.Insert(txtEditor.SelectionStart, "jj"); txtEditor.SelectionLength = 0; } txtEditor.SelectionStart = curPos + 2; //or whatever the length of text u inserted 

这个TextBox,当用户按下k键时添加“jj”。 光标位置被修正。

 public class MyTextBox : TextBox { protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == Keys.K) { int pos = this.SelectionStart; this.Text = this.Text.Substring(0, this.SelectionStart) + "jj" + this.Text.Substring(this.SelectionStart); this.SelectionStart = pos + 2; return true; } return base.ProcessCmdKey(ref msg, keyData); } }