如何设置基于鼠标位置WinForms的选择开始



我需要根据鼠标位置设置文本框的选择开始,我尝试在双击时加载文本框,加载文本框后,我需要根据鼠标位置设置选择开始。(即)如果文本框包含一些值,如"abcdef",如果加载文本框时鼠标光标在"c"附近,则选择开始应该在"c"之后。

我也试过这个

textBox.GetCharIndexFromPosition(e.Location);

但我没有做对,

提前谢谢。

问候

文卡特桑·

> 将@Reza的代码放在正确的事件中就可以了:

private void textBox_MouseDoubleClick(object sender, MouseEventArgs e)
{
    textBox.Text = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";  // load the text data here
    // now position the caret onto the mouse position
    textBox.SelectionStart = textBox.GetCharIndexFromPosition(e.Location);
    // and clear a selection
    textBox.SelectionLength = 0;
}

请注意,您需要使用MouseDoubleClick,而不是简单的DoubleClick否则您将错过e.Location参数!

这是获取鼠标相对于TextBox坐标的最简单,最直接的方法。

如果您的加载方法很复杂,您可以通过传入MouseEventArgs e来调用它,但简单地调用它而不是textBox.Text = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";是最自然的方法。

如果你愿意,你也可以使用

textBox.SelectionStart = textBoxtextBox1.PointToClient(Control.MousePosition));

这将适用于任何事件或方法。 PointToClient将从屏幕位置Control.MousePosition计算相对位置。

最新更新