选择文本框中的文本:从插入位置提取单词而不进行选择

时间:2017-03-17 18:28:12

标签: wpf vb.net

我有问题,我想看看你是否可以帮助我。

我所寻找的是当我右键单击TexBox内的单词时告诉我我所提出的单词,然后我可以将该单词添加到我已经创建的字典中。

我的代码:

If textbox1.SelectedText <> "" Then 
     Dim agr As String = textbox1.SelectedText.Remove(textbox1.SelectedText.Length - 1) 
     MsgBox(agr) 
Else 
     MsgBox("Select a word by double click to add it to the dictionary") 
End If

2 个答案:

答案 0 :(得分:1)

有一个名为SelectionStart的属性,表示文本框中插入符号的位置。当没有选择任何内容时,它的值也会有效。

从那里向左循环,直到遇到单词边界或零。然后循环直到遇到单词边界或Len-1。使用您通过这种方式获得的两个偏移量,使用SubString函数提取插入符号周围的单词。

答案 1 :(得分:1)

使用此代码可以解决您的问题。如果它适合您,请将其标记为已解决,以便将来的读者得到确认。如果你在下面的评论部分有任何疑问,请向我询问任何问题。

Private Sub Textbox1_MouseDown(sender As Object, e As MouseEventArgs) Handles Textbox1.MouseDown
    If MouseButtons.Right Then
        If Textbox1.TextLength - Textbox1.Text.IndexOf(" ", 0) > Textbox1.SelectionStart Then
            Textbox1.Select((Textbox1.Text.LastIndexOf(" ", Textbox1.SelectionStart) + 1), (Textbox1.Text.IndexOf(" ", Textbox1.SelectionStart) - (Textbox1.Text.LastIndexOf(" ", Textbox1.SelectionStart) + 1)))
        Else
            Textbox1.Select(Textbox1.Text.LastIndexOf(" ", Textbox1.TextLength) + 1, Textbox1.TextLength - Textbox1.Text.LastIndexOf(" ", Textbox1.TextLength))
        End If
    End If
End Sub

祝你好运!