none
リッチテキストボックス内の行番号と文字列削除 RRS feed

  • 質問

  • リッチテキストボックスに行番号と取引先名と印刷枚数と取引先コードを表示させています。
    テキストボックス5に取引先コードを入力し、ボタンを押してデータテーブルから削除をして、
    リッチテキストボックス内から削除をする事が出来ず苦慮しております。
    ボタンを押す事でリッチテキストボックス内から、その取引先情報が削除されるにはどうすればよいでしょうか?

    リッチテキストボックス内への表示

    '取引先名
    Dim a As String
    a = TextBox7.Text
    '印刷枚数
    Dim d As String = TextBox2.Text
    TextBox8.Text = d
    '取引先コード
    Dim x As Integer
    x = TextBox6.Text
    'リッチテキストボックス表示
    Dim xx As Integer
    xx = IIf(RichTextBox1.Lines.Count = 0, 1, RichTextBox1.Lines.Count)
    a = StrConv(xx, VbStrConv.Wide) & "." & TextBox7.Text
    a &= " " & TextBox2.Text & "枚" & " " & TextBox6.Text & vbLf

    'dt1から削除
    Dim keyValue = TextBox5.Text
    For i = dt1.Rows.Count - 1 To 0 Step -1
    If dt1.Rows(i)(3).ToString() = keyValue Then
    dt1.Rows.Remove(dt1.Rows(i))
    End If
    Next
    dt1.AcceptChanges()

    リッチテキストボックス内
    1.◎◎会社 2枚 12
    2.▽◆会社 5枚 10
    3.◇◆会社 6枚 15

    テキストボックス5に 12を入力します。

    そしてボタンを押して、1.◎◎会社 2枚 12 を削除します。
    削除後、行間を詰め以下のようにしたいと思います。

    リッチテキストボックス内
    2.▽◆会社 5枚 10
    3.◇◆会社 6枚 15


    宜しくお願いします。

     

    2013年4月23日 3:56

回答

  • 私も trapemiya さんの意見に賛成です。
    DataTable の内容をわざわざ表形式に文字列加工してリッチテキストボックスに表示する理由が見出せません。
    DataGridView 等であればデータをバインドするだけで済むので、コード量も減るしその分バグも減りますので管理しやすいと思います。


    ひらぽん http://d.hatena.ne.jp/hilapon/

    • 回答としてマーク 星 睦美 2013年4月26日 4:17
    2013年4月24日 1:42
    モデレータ
  • データテーブルからデータを削除後に、残ったデータをもう一度リッチテキストボックスに再表示すればよいだけではないでしょうか? 今、リッチテキストボックスに表示されている内容を編集しようとすると、おそらく複雑になります。

    ところでなぜリッチテキストボックスに表示されているのでしょうか? リッチテキストボックスはこのようなデータの一覧を表示するには不向きなコントロールです。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答の候補に設定 星 睦美 2013年4月24日 2:16
    • 回答としてマーク 星 睦美 2013年4月26日 4:16
    2013年4月23日 4:50
    モデレータ
  • 特に問題がないのであれば、今のうちにリッチテキストボックスを使うのを止め、ListViewやDataGridViewなど、表形式で表示可能であるコントロールを使われることをお勧めします。リッチテキストボックスは表のように整形された文字を表示するのは不向きであり、したがって、その中で個々に表示されるデータを識別することは、不可能とは言いませんがかなり無理があります。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2013年4月23日 6:18
    モデレータ

すべての返信

  • データテーブルからデータを削除後に、残ったデータをもう一度リッチテキストボックスに再表示すればよいだけではないでしょうか? 今、リッチテキストボックスに表示されている内容を編集しようとすると、おそらく複雑になります。

    ところでなぜリッチテキストボックスに表示されているのでしょうか? リッチテキストボックスはこのようなデータの一覧を表示するには不向きなコントロールです。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答の候補に設定 星 睦美 2013年4月24日 2:16
    • 回答としてマーク 星 睦美 2013年4月26日 4:16
    2013年4月23日 4:50
    モデレータ
  • 回答ありがとうございます。

    作成した時はリッチテキストボックスで行っていたので、理由を考慮していなかったのは浅はかですが。

    >データテーブルからデータを削除後に、残ったデータをもう一度リッチテキストボックスに再表示すればよいだけではないでしょうか?
    ⇒データテーブル内の文字列を削除する事に固執していたので、ご教授頂いた方法でトライします。

    参考になる情報やサンプル等ありましたら、ご教授下さい

    2013年4月23日 5:54
  • 特に問題がないのであれば、今のうちにリッチテキストボックスを使うのを止め、ListViewやDataGridViewなど、表形式で表示可能であるコントロールを使われることをお勧めします。リッチテキストボックスは表のように整形された文字を表示するのは不向きであり、したがって、その中で個々に表示されるデータを識別することは、不可能とは言いませんがかなり無理があります。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2013年4月23日 6:18
    モデレータ
  • 私も trapemiya さんの意見に賛成です。
    DataTable の内容をわざわざ表形式に文字列加工してリッチテキストボックスに表示する理由が見出せません。
    DataGridView 等であればデータをバインドするだけで済むので、コード量も減るしその分バグも減りますので管理しやすいと思います。


    ひらぽん http://d.hatena.ne.jp/hilapon/

    • 回答としてマーク 星 睦美 2013年4月26日 4:17
    2013年4月24日 1:42
    モデレータ