1

我目前在 .NET4 Windows 窗体应用程序中。

我正在尝试制作类似智能感知的东西,但非常基础。

假设用户正在关注RichTextBox,并输入类似: Search。在这个特定的短语之后,我希望它像这样“自动填充”:Search ""并将插入符号放在“”之间。

这样,当用户继续输入插入符号时,插入符号会保持在“”之间,如下所示:

Search "[usertypinghere][caretposition]"

我不知道如何获得插入符号的当前位置,更不用说如何保持它了。

4

1 回答 1

1

令人高兴的是,它是TextBoxBaseSelectionStart的一部分,因此您可以将它放在、、,甚至是其他人的自定义衍生产品中。您需要订阅事件以观看“搜索”,然后在自动填充后设置,然后订阅以防止转向。TextBoxRichTextBoxMaskedTextBoxTextChangedSelectionStartSelectionChangedEventSelectionStart

哦,如果你有几个关键字,你会想要组合这些关键字DictionaryTuples概括这些方法。

编辑我的测试代码。没有闪烁,没有压倒一切的控制。只是普通的事件订阅者

private void richTextBox1_TextChanged(object sender, EventArgs e)
    {
        if (richTextBox1.Text == "Search")
        {
            richTextBox1.Text = "Search \"\"";
            richTextBox1.SelectionStart = richTextBox1.TextLength - 1;
        }

    }

    private void richTextBox1_SelectionChanged(object sender, EventArgs e)
    {
        if (richTextBox1.Text.StartsWith("Search \"") && richTextBox1.Text.EndsWith("\""))
        {
            if (richTextBox1.SelectionStart > richTextBox1.TextLength - 1)
            {
                richTextBox1.SelectionStart = richTextBox1.TextLength - 1;
            }
            if (richTextBox1.SelectionStart <= "Search \"".Length)
            {
                richTextBox1.SelectionStart = "Search\"".Length+1;
            }
        }
    }
于 2012-06-11T22:58:43.710 回答