views:

394

answers:

1

I have a RichTextBox control. When you left-click in the text the cursor jumps to where you clicked. I want this to happen when I right-click as well. I'm not sure how to do this. Thanks!

+2  A: 

Assuming winforms:

Implement a MouseUp event handler like so:

private void richTextBox1_MouseUp(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        RichTextBox box = (RichTextBox)sender;
        box.SelectionStart = box.GetCharIndexFromPosition(e.Location);
        box.SelectionLength = 0;
    }
}
Phil
Good answer but I'd suggest one minor improvement. It is standard practice for Windows apps to not replace the active selection on right-click if the active selection itself is right-clicked. Your code can accomplish this by simply checking that GetCharIndexFromPosition returns an index outside SelectionStart and SelectionStart + SelectionLength before setting the selection.
Dave76
Yeah that sounds sensible from a usability point of view.
Phil