2012-05-09 15 views
0

私はcontextmenustrip dorpdownitemをクリックしながらマウスカーソルの下の現在の単語を置き換えたいと思います。私は言葉を得ることができますが、ここで私のコードは新しいものと置き換えることができません、どんな助力も大変感謝しています。それはrichtextboxのマウスの下の単語を置き換えます。

+0

「コードが必要です」と援助が必要なのは何ですか? – Jared

+0

あなたが持っているコードについては何ができませんか? –

+0

「コードはあなたの助けが必要ですか?はい、 あなたが持っているコードについては何ができませんか? acctualy私は両方の単語を置き換える単語と置き換えた単語を持っていますが、どのように現在のカーソルがどこにあるのかわからず、自分の単語を置き換えることができます。 – user934820

答えて

1

OK]をクリックしてそれを作ったことになるとき

Private Sub tsmmutradifat__DropDownItemClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles tsmmutradifat_.DropDownItemClicked 
    Dim myclickeditem As String = correct_word(e.ClickedItem.Text) 
    Dim wordtoreplace As String 
    If Not myclickeditem = Nothing Then 
     If RichTextBox1.SelectedText = "" Then 
      ' Code required 
     Else 
      wordtoreplace = RichTextBox1.SelectedText 
      If wordtoreplace.EndsWith(" ") Then 
       myclickeditem = myclickeditem & " " 
      End If 
      If wordtoreplace.StartsWith(" ") Then 
       myclickeditem = " " & myclickeditem 
      End If 
      RichTextBox1.SelectedText = myclickeditem 
     End If 
    End If 
End Sub 

okが、未来の時間が表示されます。フォーラムで以下のコードを見つけて、私のニーズに応じてそれをちょっと変わったが変わった。マウス移動イベント、その後

Public cursorAt As Integer 
    Public wordEnd As Integer 
    Public isEnd As Boolean 
    Public wordStart As Integer 
cursorAt = RichTextBox1.GetCharIndexFromPosition(e.Location) 
     If cursorAt = 0 Then Return 
     wordEnd = New Regex("[\s$]{1}").Match(RichTextBox1.Text.Substring(cursorAt)).Index 
     isEnd = Not New Regex("\s").IsMatch(RichTextBox1.Text.Substring(cursorAt)) 
     wordStart = New Regex("[\s^]{1}", RegexOptions.RightToLeft).Match(RichTextBox1.Text.Substring(0, cursorAt)).Index 
     If isEnd Then 
RichTextBox1.Select(wordStart, RichTextBox1.Text.Length) 
        Else 
      RichTextBox1.Select(wordStart, cursorAt - wordStart + wordEnd) 

     End If 

とで は単に私は、コードが提案考えるその単語

RichTextBox1.SelectedText = myclickeditem 
-1

F6.RichTextBox1.Focus() SendKeys.Send(TextBox4.Text)

-1

を置き換えますユーザ934820によって改善することができる。 "\ b"を使用すると、単語の境界がよくわかります。ボーナスとして、テキストの終わりの場合を無視することができます(単語の境界線でもあります)。だから、コードは、

wordEnd = New Regex(".\b{1}").Match(RichTextBox1.Text.Substring(cursorAt)).Index 
wordStart = New Regex("\b.{1}", RegexOptions.RightToLeft).Match(RichTextBox1.Text.Substring(0, cursorAt)).Index 

RichTextBox1.Select(wordStart, cursorAt - wordStart + wordEnd + 1) 

してくださいように見えるこの検索は、(元のコードのように)言葉ではない、それの後にスペースで非常に最後の文字を返すことに注意を払うだろう。必要に応じて(Selectionのように)1ずつ増分します。

関連する問題