0

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

我也试过这个

textBox.GetCharIndexFromPosition(e.Location);

但我没看对,

提前致谢。

问候,

文卡特桑

4

1 回答 1

1

将@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

于 2016-01-25T15:58:54.163 回答