0

この問題は私を夢中にさせています。私はRTBを持っており、スペースキーが押されたときにRTBに最後に入力された単語をキャプチャし、VSインテリセンスポップアップに表示されるように、いくつかの提案された単語に置き換えます. RTB.SelectionStart プロパティが RTB.Text.Length よりも大きくなるハイパーリンク/テーブルを使用してテキストを貼り付けた場合を除いて、すべて正常に機能していました。RTB.SelectionStart プロパティから、スペースが見つかるまで左に向かって入力された文字をキャプチャし、それを逆にして最後の単語を入力します。しかし、ハイパーリンク テキストを貼り付けて単語を書き始めると、それができません。RTB.SelectionStart が RTB.Text.Length よりも大きくなるためです。RTB.Text.Substring メソッドを使用して文字をキャプチャすることはできません (左に向かって)

このような場合、現在のカーソル位置を正しく取得するにはどうすればよいですか?

編集:

private string GetLastWord()
    {string word = "";
        int pos = rtfText.SelectionStart;
      //  int length = rtfText.Text.Length;
       // if (pos > length) pos = length;

            if (pos >= 1)
            {
                string tmp = "";
                var f = new char();

                while (f != ' ' && f != '-' && f != 10 && pos > 0)
                {
                    pos--;
                    tmp = rtfText.Text.Substring(pos, 1);
                    f = tmp[0];
                    word += f;
                }

                char[] ca = word.ToCharArray();
                Array.Reverse(ca);
                word = new String(ca);
            }
            // MessageBox.Show(word + ":" + word.Length);
            return word;
   }
4

0 に答える 0