C# 如何检测光标位置是否在richtextbox中的特定字符之间

C# 如何检测光标位置是否在richtextbox中的特定字符之间,c#,winforms,visual-studio,visual-studio-2015,C#,Winforms,Visual Studio,Visual Studio 2015,所以我尝试在Winforms中创建一个编辑器应用程序,它允许我自动对齐括号。我现在有一个richtextbox,当我按下左括号时,它会创建一个右括号 接下来我要做的是,当我的光标位于开始括号和结束括号之间时,我按enter键,结束括号将比开始括号再放置两行,光标将在插入制表符的情况下再放置一行 我的主要问题是,如何检测光标是否在两个特定字符之间?右括号和光标的位置是可选的 public void addTabToText() { int caretPos = myTextBo

所以我尝试在Winforms中创建一个编辑器应用程序,它允许我自动对齐括号。我现在有一个richtextbox,当我按下左括号时,它会创建一个右括号

接下来我要做的是,当我的光标位于开始括号和结束括号之间时,我按enter键,结束括号将比开始括号再放置两行,光标将在插入制表符的情况下再放置一行

我的主要问题是,如何检测光标是否在两个特定字符之间?右括号和光标的位置是可选的

public void addTabToText()
    {
      int caretPos = myTextBox.SelectionStart; //Get the start position
      if(caretPos != 0 && caretPos!=myTextBox.Text.Length) //if not at the end or start
      {
        if(myTextBox.Text[caretPos-1]=='(' && myTextBox.Text[caretPos]==')'){
          myTextBox.Text = myTextBox.Text.Insert(caretPos, "  ");
          //to change cursor position
          myTextBox.SelectionStart = caretPos + 2; // length of string added 
          myTextBox.SelectionLength = 0;
        }
      }
    }

在这里,我使用
SelectionStart
检查上一个字符和下一个字符。您可以从
Enter
pressed事件调用此选项

为什么不能检查
SelectionStart
属性?我不知道如何检查你在评论中的链接是如何在光标处放置文本的。我需要检查光标是否在某些字符之间设置索引,执行+1和-1您将获得起点和终点索引。在中间插入字符串。我无法编写示例代码,因为我正在通过电话访问so。示例代码会很方便是的。因为我看不出这是如何检查我的光标是否在{和}之间,不幸的是它不起作用。我唯一改变的是:我的文本框现在是editorTB;(和)现在是{和}。我在按键事件中调用该函数。您遇到了什么问题?错误/输出是什么?我没有得到任何错误/输出。这根本没用。我想这是因为对caretpos的检查不正确,而且从来都不是真的。你能调试并告诉我一个正确输入的
caretpos
的值吗?caretpos的值每次都会变化。假设我有一行这样的文本:“文本行{}”,那么caretPos将等于14。如果我有一行这样的文本:“再多一行{}”,那么caretPos等于15