如何根据鼠标位置设置WinForms文本框的SelectionStart?我正在扩展TextBox并想在用户右键单击TextBox时将鼠标置于鼠标指针下方的位置(即与左键单击行为相同)。
到目前为止,这是我的OnMouseDown重写:
protected override void OnMouseDown(MouseEventArgs e) {
if (e.Button == System.Windows.Forms.MouseButtons.Right) {
this.Focus();
//if we have a range of text selected, leave it
if (this.SelectionLength == 0) {
//set the SelectionStart here based on the mouse location in the MouseEventArgs e
}
//...
} else
base.OnMouseDown(e);
}
我已经使用SetCaretPos(例如
SetCaretPos(e.Location.X, e.Location.Y);
)进行了调查,但无法使其正常工作(我在那里看到了插入记号,但这只是一个瞬间,并不影响SelectionStart)。 最佳答案
尝试这样的事情:
this.SelectionStart = this.GetCharIndexFromPosition(e.Location);
关于c# - 根据鼠标位置设置WinForms TextBox的SelectionStart,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12340957/