2012-09-09 54 views
2

如何根據鼠標位置設置WinForms文本框的SelectionStart?我在擴展TextBox並想在用戶右鍵單擊TextBox時(即與左鍵單擊相同的行爲)將鼠標置於鼠標點下的位置。根據鼠標位置設置WinForms文本框的SelectionStart

這裏是我的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)。

回答

2

嘗試這樣:

this.SelectionStart = this.GetCharIndexFromPosition(e.Location); 
+0

完美,謝謝! –