私のアプリケーションでは、Fastcoloredtextbox というテキスト ボックス コントロールを使用していますが、これはテキスト ボックス コントロールを継承しているため、これを行うには同じソリューションである必要があります。
ユーザーがアプリケーションで単語をクリックすると、ファイルを開くダイアログが開き、ユーザーがファイルを選択して、クリックされた単語をファイル名に置き換える機能を追加しました。これは、1 つの問題を除いて、私が達成しようとしているものです...テキスト ボックス内の同じ単語のすべてのインスタンスをこのファイル名に置き換えます。ただし、クリックされた単語のみを置き換える方法はわかりません。どんな助けでも大歓迎です。
Private Sub tb_VisualMarkerClick(sender As Object, e As VisualMarkerEventArgs)
Dim page As RadPageViewPage = RadPageView1.SelectedPage
Dim txt As FastColoredTextBox = TryCast(page.Controls(0), FastColoredTextBox)
Dim ofd As New OpenFileDialog
ofd.FileName = ""
ofd.Filter = "Image Files (*.bmp, *.jpg)|*.bmp;*.jpg"
If ofd.ShowDialog = DialogResult.OK
Then
Dim ClickedWord As String = (TryCast(e.Marker, RangeMarker).range.Text)
txt.Text = txt.Text.Replace(ClickedWord, ofd.FileName)
End If
End Sub
clickedword 文字列は、クリックされた実際の単語です。
編集:アイテムがクリックされた場所で選択を開始し、単語全体を選択するソリューションを思いつきました。選択すると、テキストを挿入して、選択した単語を置き換えることができます。アドバイスをくださった方々、ありがとうございました。
Private Sub tb_VisualMarkerClick(sender As Object, e As VisualMarkerEventArgs)
Dim page As RadPageViewPage = RadPageView1.SelectedPage
Dim txt As FastColoredTextBox = TryCast(page.Controls(0), FastColoredTextBox)
txt.Invalidate()
txt.Selection.Start = New Place((TryCast(e.Marker, RangeMarker).range).Start.iChar, (TryCast(e.Marker, RangeMarker).range).Start.iLine)
txt.SelectionLength = (TryCast(e.Marker, RangeMarker).range).Text.Length
Dim ClickedWord As String = (TryCast(e.Marker, RangeMarker).range.Text)
If ClickedWord = "path" Then
Dim ofd As New OpenFileDialog
ofd.FileName = ""
ofd.Filter = "Image Files (*.bmp, *.jpg)|*.bmp;*.jpg"
If ofd.ShowDialog = DialogResult.OK Then
txt.InsertText(ofd.FileName)
End If
End If
End Sub