如何根据鼠标位置设置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/

10-11 01:51