当我在WinForms中选择RichTextBox中的任何文本时,我应该使用什么事件?

时间:2015-12-27 10:05:37

标签: c# .net

我想从RichTextBox中选择一些文字时执行某些操作。那么RichTextBox在什么情况下我应该写出我的逻辑?

我正在设计一个记事本。我有一个Menustrip,而Menustrip我有复制,粘贴,撤消和重做选项。我希望仅当用户选择RichTextBox中的任何文本时,用户才能看到这些选项。

我已经在许多活动中尝试过,但到目前为止还没有成功。 我已在RichTextBox Mousecapturechanged事件和Toolstripmenu menu active event中尝试过。

我正在使用C#。

请帮助。

3 个答案:

答案 0 :(得分:1)

最好的解决方案是订阅RichTextBox的{​​{3}}事件,并在事件处理程序中检查所选文本的长度是否大于0,如下所示:

private void richTextBox1_MouseUp(object sender, MouseEventArgs e)
{
    if (richTextBox1.SelectedText.Length > 0)
    {
        // Show the Copy, Paste, Cut Buttons...
    }
}

这是因为只要更改了选择,MouseUp事件就会触发,因此甚至不能让您正确选择文本。

答案 1 :(得分:0)

您可以使用SelectionChanged事件:

  

在控件中的文本选择发生更改时发生。

MSDN链接 - RichTextBox

此活动非常适合您的目标。

现在您还需要正确使用它。即使您键入内容,此事件也会触发。所以你必须验证是否选择了这样的东西:

private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
    if (richTextBox1.SelectedText.Length > 1)
    {
        // Show the Copy, Paste, Cut Buttons...
    }
}

答案 2 :(得分:0)

您可以使用<c:forEach var="row" items="${result.rows}"> 事件并检查光标是否已更改或是否已选择部分文本。

SelectionChanged