我需要根据鼠标位置设置文本框的选择开始,我试图在双击上加载文本框,一旦加载文本框,我需要根据鼠标位置设置选择开始。 (即)如果文本框包含某些值,如" abcdef",如果鼠标光标在" c"附近。当加载文本框时,选择开始应该在" c"。
之后我也试过这个
textBox.GetCharIndexFromPosition(e.Location);
但我没有做对,
提前致谢。
此致
Venkatesan R
答案 0 :(得分: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
的相对位置。