1

C#で、リッチテキストボックス内の次の単語にカーソルを移動するにはどうすればよいですか?例えば

与えられた文

"彼は男の子です"

現在、カーソルが「is」の前、つまり「He」の後に配置されていて、「a」の前、つまり「is」の後の位置にカーソルを移動したいとします。

richtextbox.SelectionStartそのようなアクションを実行するために使用できますか?

4

4 に答える 4

0

SendKeysを使用してもかまわない場合は、以下の例で要件を達成できます。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        richTextBox1.Focus();
        SendKeys.SendWait("^{LEFT}");
    }

    private void button2_Click(object sender, EventArgs e)
    {
        richTextBox1.Focus();
        SendKeys.SendWait("^{RIGHT}");
    }
}
于 2012-07-11T10:08:00.340 に答える
0

.Find(Char) メソッドを使用して、次のスペースの位置を見つけてみてください。

int x = richtextbox.Find(' ');
richtextbox.SelectionStart = x;
richtextbox.Focus();

それをテストする可能性はありませんが、私は働くべきです。

于 2012-07-11T10:06:07.250 に答える
0

あなたの意図が単語を検索することである場合。それを強調表示して、見つかった単語にカーソルを移動します。 注: 検索ボタンは「クリックごと」に機能します。クリックごとに。これは、richtextBox テキスト ドキュメント内で次に一致する単語を検索します。

    // Search text and Highlight it (Per Click)
    // Manually add the "FindText"
    public int FindText(string txtToSearch, int searchStart, int searchEnd)
    {
        // Unselect the previously searched string
        if (searchStart > 0 && searchEnd > 0 && IndexOfSearchText >= 0)
        { rtb.Undo(); }

        // Set the return value to -1 by default.
        int retVal = -1;

        // A valid starting index should be specified.
        // if indexOfSearchText = -1, the end of search
        if (searchStart >= 0 && IndexOfSearchText >= 0)
        {
            // A valid ending index
            if (searchEnd > searchStart || searchEnd == -1)
            {
                // Find the position of search string in RichTextBox
                IndexOfSearchText = rtb.Find(txtToSearch, searchStart, searchEnd, RichTextBoxFinds.None);
                // Determine whether the text was found in richTextBox1.
                if (IndexOfSearchText != -1)
                {
                    // Return the index to the specified search text.
                    retVal = IndexOfSearchText;
                }
            }
        }
        return retVal;
    }

    // Button to Perform the Search (By Click)
    private void btn_Search_Click(object sender, EventArgs e)
    {
        int startIndex = 0;

        if (txt_Search.Text.Length > 0) startIndex = FindText(txt_Search.Text.Trim(), start, rtb.Text.Length);

        // If string was found in the RichTextBox, highlight it
        if (startIndex >= 0)
        {
            int x = rtb.Find(txt_Search.Text);
            rtb.SelectionStart = x;
            rtb.Focus();
            // Set the highlight color as red
            rtb.SelectionBackColor = Color.LightYellow;  // Remove to avoid minor Bug
            rtb.SelectionColor = Color.Black;            // Remove to avoid Minor Bug
            // Find the end index. End Index = number of characters in textbox
            int endindex = txt_Search.Text.Length;
            // Highlight the search string
            rtb.Select(startIndex, endindex);
            // mark the start position after the position of
            // last search string
            start = startIndex + endindex;
        }

    }

    // TextBox to Search
    private void txt_Search_TextChanged(object sender, EventArgs e)
    {
        start = 0;
        IndexOfSearchText = 0;
    }
}

}

お役に立てれば。

于 2014-02-05T16:55:21.407 に答える
0

これはうまくいくはずです:

int curr = richTextBox1.SelectionStart;

int x = Regex.Match(richTextBox1.Text.Substring(curr), @"\s[^\s]").Index;

if (x != 0)
    richTextBox1.SelectionStart = x + curr + 1;

richTextBox1.Focus();
于 2012-07-11T10:13:55.703 に答える