我正在为自己制作一个带有基本代码编辑器的应用程序。 创建自动括号时遇到了问题。 当我的光标位于文本框的第4行时,我按下'('它移动'('到文本框的第1行,它会添加')& #39;第4行。
这是我的代码:
private void editorTB_KeyPress(object sender, KeyPressEventArgs e)
{
bool CSharpMode = true;
if (CSharpMode == true)
{
if (e.KeyChar == '(')
{
editorTB.Text += ")";
}
}
}
editorTB是我的richtextbox1控件。
我希望有人可以帮我解决问题。提前谢谢!
答案 0 :(得分:1)
这段代码在")"
字符之后的任何文本框中插入"("
个字符。
案例:TEXT(
输出:文字()
案例1:TE(XT
输出1:TE()XT
检查此keypress
事件。关键在这里e.Handled是真的。否则它不会工作。
if (e.KeyChar == '(')
{
e.Handled = true;
const string insertText = ")";
var selectionIndex = textBox1.SelectionStart;
textBox1.Text = textBox1.Text.Insert(selectionIndex, "(");
textBox1.Text = textBox1.Text.Insert(selectionIndex +1, insertText);
textBox1.SelectionStart = selectionIndex + insertText.Length;
}