我需要根据鼠标位置设置文本框的选择开始,我尝试在双击时加载文本框,一旦加载文本框,我需要根据鼠标位置设置选择开始。(即)如果一个文本框包含一些值,如“abcdef”,如果加载文本框时鼠标光标靠近“c”,那么选择开始应该在“c”之后。
我也试过这个
textBox.GetCharIndexFromPosition(e.Location);
但我没看对,
提前致谢。
问候,
文卡特桑
我需要根据鼠标位置设置文本框的选择开始,我尝试在双击时加载文本框,一旦加载文本框,我需要根据鼠标位置设置选择开始。(即)如果一个文本框包含一些值,如“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
。