トップ回答者
リッチテキストボックス内の(任意の)文字列を選択して削除したい

質問
-
Vs2010Proを使っています。
Windowsフォーム内にリッチテキストボックスが1個あります。そのリッチテキストボックス内に改行されている文字列が複数個あります。
リッチテキストボックスには1行ごとに改行して表示しています。Dim a As String
a = TextBox7.Text
a &= vbLf
RichTextBox1.AppendText(a)リッチテキストボックス内の文字列を選択する行が、どの行であると決まっているわけではありません。
例えば10行表示されていた場合、1行目だけ、8行目だけ等になります。
複数選択する場合であっても、1行ずつ選択することになります。RichTextBox1.HideSelection = False
RichTextBox1.SelectionStart = 0
RichTextBox1.SelectionLength = RichTextBox1.Text.IndexOf(vbLf) + 0
RichTextBox1.Focus()
RichTextBox1.SelectedText = ""現状のコードですと、リッチテキストボックス内の1行毎の文字列を選択できません。
ボタンをクリックすると、上から順に1行ずつ削除されてしまいます。リッチテキストボックス内の任意の文字列をクリックして行を選択、ボタンをクリックすると
その選択した行が削除されし、削除された行間を上に詰めます。
ご教授下さい。
宜しくお願い致します。
回答
-
こんな感じでどうでしょう?
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim index As Integer = RichTextBox1.GetLineFromCharIndex(RichTextBox1.SelectionStart) Dim newLines As New List(Of String) For i As Integer = 0 To RichTextBox1.Lines.Count - 1 If i <> index Then newLines.Add(RichTextBox1.Lines(i)) End If Next RichTextBox1.Lines = newLines.ToArray() End Sub
GetLineFromCharIndexで行番号を取得、Linesをループで回して選択行以外の文字列の配列を作ってRichTextBoxに再格納、という事です。
以上、参考まで。
すべての返信
-
こんな感じでどうでしょう?
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim index As Integer = RichTextBox1.GetLineFromCharIndex(RichTextBox1.SelectionStart) Dim newLines As New List(Of String) For i As Integer = 0 To RichTextBox1.Lines.Count - 1 If i <> index Then newLines.Add(RichTextBox1.Lines(i)) End If Next RichTextBox1.Lines = newLines.ToArray() End Sub
GetLineFromCharIndexで行番号を取得、Linesをループで回して選択行以外の文字列の配列を作ってRichTextBoxに再格納、という事です。
以上、参考まで。