无法在TextBox中获得自动关闭括号

时间:2016-11-10 05:51:03

标签: c# winforms visual-studio

我正在为自己制作一个带有基本代码编辑器的应用程序。 创建自动括号时遇到了问题。 当我的光标位于文本框的第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控件。

我希望有人可以帮我解决问题。提前谢谢!

1 个答案:

答案 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;
        }