从光标位置.net中的文本框中获取文本

时间:2011-12-11 16:48:24

标签: .net winforms textbox cursor textselection

我需要从winforms的文本框中获取文本,我需要获取光标所在的文本,例如

  

你好或假设|或看

这应该返回单词position(注意这里我用管道作为光标)

你知道我可以使用的任何技术吗

3 个答案:

答案 0 :(得分:3)

我测试了这个真实的快速,似乎它一直工作

Private Function GetCurrentWord(ByRef txtbox As TextBox) As String
    Dim CurrentPos As Integer = txtbox.SelectionStart
    Dim StartPos As Integer = CurrentPos
    Dim EndPos As Integer = txtbox.Text.ToString.IndexOf(" ", StartPos)

    If EndPos < 0 Then
        EndPos = txtbox.Text.Length
    End If

    If StartPos = txtbox.Text.Length Then
        Return ""
    End If

    StartPos = txtbox.Text.LastIndexOf(" ", CurrentPos)
    If StartPos < 0 Then
        StartPos = 0
    End If

    Return txtbox.Text.Substring(StartPos, EndPos - StartPos).Trim
End Function

答案 1 :(得分:3)

感谢所有试图提供帮助的人,

我有一个更好,更简单的方法,没有循环

Dim intCursor As Integer = txtInput.SelectionStart
Dim intStart As Int32 = CInt(IIf(intCursor - 1 < 0, 0, intCursor - 1))
Dim intStop As Int32 = intCursor
intStop = txtInput.Text.IndexOf(" ", intCursor)
intStart = txtInput.Text.LastIndexOf(" ", intCursor)
If intStop < 0 Then
 intStop = txtInput.Text.Length
End If
If intStart < 0 Then
  intStart = 0
End If
debug.print( txtInput.Text.Substring(intStart, intStop - intStart).Trim)

感谢所有

答案 2 :(得分:2)

尝试这样的事情:

private void textBox1_MouseHover(object sender, EventArgs e)
{
    Point toScreen = textBox1.PointToClient(new Point(Control.MousePosition.X + textBox1.Location.X, Control.MousePosition.Y + textBox1.Location.Y));

    textBox1.SelectionStart = toScreen.X - textBox1.Location.X;
    textBox1.SelectionLength = 5; //some random number

    MessageBox.Show(textBox1.SelectedText + Environment.NewLine +  textBox1.SelectionStart.ToString());
}

它对我有用,但也取决于你的文本框是对表单本身的附加控件。如果它在面板内或代码应该更改。

编辑我似乎误解了你的问题,但是当鼠标移过它时你需要选择文字!抱歉!我相信你只能使用RichTextBox来完成这项任务,你可以在其中获得插入符号的位置!