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
2010-06-08 11:05:06
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
2010-07-17 01:00:14
Yeah that sounds sensible from a usability point of view.
Phil
2010-07-17 09:35:40