VS C#ですが、Windows FormのRichTextBoxに動作を行った後、動作結果を表示しています。
動作結果は、既存の記録は残し、新しい結果を改行していきます。
しかし、改行が長くなってしまうとTextboxの表示枠を超えて下に隠れてしまい、スクロールしないと見えなくなります。これを表示枠の大きさ以上にならないようにしたいです。
例えば、表示されるのは10行までで、10行以上は最も古い行が削除される。
どうすればよいでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
TextBoxBase.Linesプロパティ
こちらを利用されてはどうでしょうか。
Listにして、RemoveAtで最初の項目を消し、Linesプロパティに設定しなおせば最初の行が消えます。
投稿2020/07/31 01:11
総合スコア10489
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
古い行の削除にも需要はあると思いますので回答しておきます。
c# - Delete a specific line in a .NET RichTextBox - Stack Overflow
で、書式を維持したままの行削除を確認できました。
cs
1using System; 2using System.Drawing; 3using System.Linq; 4using System.Windows.Forms; 5 6namespace Questions281426 7{ 8 public partial class Form1 : Form 9 { 10 private Timer timer1; 11 private RichTextBox richTextBox1; 12 private int c; 13 14 public Form1() 15 { 16 InitializeComponent(); 17 18 timer1 = new Timer 19 { 20 Enabled = true, 21 Interval = 1000, 22 }; 23 timer1.Tick += Timer1_Tick; 24 25 richTextBox1 = new RichTextBox 26 { 27 Dock = DockStyle.Fill, 28 }; 29 Controls.Add(richTextBox1); 30 } 31 32 private void Timer1_Tick(object sender, EventArgs e) 33 { 34 // なんか追加 35 richTextBox1.SelectionStart = richTextBox1.TextLength; 36 richTextBox1.SelectionLength = 0; 37 richTextBox1.SelectionColor = ++c % 2 == 0 ? Color.Red : Color.Blue; 38 richTextBox1.AppendText($"あああああ{c}\n"); 39 40 // 10行以上あったら先頭から削除 41 while(10 < richTextBox1.Lines.Count()) 42 { 43 //[c# - Delete a specific line in a .NET RichTextBox - Stack Overflow](https://stackoverflow.com/questions/1329347/delete-a-specific-line-in-a-net-richtextbox/20983817#20983817) 44 richTextBox1.SelectionStart = richTextBox1.GetFirstCharIndexFromLine(0); 45 richTextBox1.SelectionLength = richTextBox1.Lines[0].Length + 1; 46 richTextBox1.SelectedText = string.Empty; 47 } 48 } 49 } 50}
投稿2020/07/31 08:54
編集2023/07/22 10:04総合スコア9862
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
新しい結果を追加するときに、あらかじめRichTextBoxにフォーカスを移動させてから、AppendText
メソッドでテキストを追加すれば、自動的に最終行までスクロールします。
追加:
なお、古い内容はスクロールして見えなくなりますが、「そこを見たい」という場合に備えて自動的に消さないほうがいいかと思います。「内容をクリアする」処理は、自動的ではなく、ボタンやメニュー項目に割り当てて、ユーザーに指示させた方がいい。
投稿2020/07/31 01:08
編集2020/07/31 01:15総合スコア11990
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/31 01:49
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。