2

如何根据鼠标位置设置 WinForms TextBox 的 SelectionStart?我正在扩展 TextBox 并希望在用户右键单击 TextBox 时将 carot 设置在鼠标点下方的位置(即与左键单击相同的行为)。

到目前为止,这是我的 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)。

4

1 回答 1

2

尝试这样的事情:

this.SelectionStart = this.GetCharIndexFromPosition(e.Location);
于 2012-09-09T16:59:00.277 回答