2009-02-11 72 views
2

我有我自己的自定義TextBox控件,從System.Windows.Forms.TextBox繼承。我重寫了OnKeyDown方法,因爲如果用戶按向上或向下鍵,我想選擇上一個或下一個控件。多行文本框中的當前行

Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs) 

    MyBase.OnKeyDown(e) 

    If e.KeyCode = Keys.Up Then 
     If Not Multiline Then 
      Me.FindForm().SelectNextControl(Me, False, True, True, True) 
     Else 
      'TODO: If the current line is the first one, select the previous control 
     End If 
    ElseIf e.KeyCode = Keys.Down Then 
     If Not Multiline Then 
      Me.FindForm().SelectNextControl(Me, True, True, True, True) 
     Else 
      'TODO: If the current line is the last one, select the next control 
     End If 
    End If 

End Sub 

在多行文本框中,有什麼更好的方法來知道我是否在第一行或最後一行?

非常感謝

+0

還確保您處理關鍵筆劃,因此它不會通過設置e.Handled = True對上下箭頭鍵進行雙重應用。 – 2009-02-11 22:42:38

回答

3

這很粗糙,但它應該做的工作。

If Me.Text.IndexOf(Environment.NewLine, 0, Me.SelectionStart) = -1 Then 
     'no new lines before 
    End If 

    If Me.Text.IndexOf(Environment.NewLine, SelectionStart) = -1 Then 
     'no new lines after 
    End If