- - PR -
RichTextBoxの行削除のしかた
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-09-21 16:42
はじめまして、VB.NETで開発しています。
通信結果ログをRichTextBoxにAppendしていく方法で表示しているのですが、 ある程度の行まで行くと、止まってしまいます。 たぶんMax行もしくは、Max文字数に達してしまったからだと思うのですが、 たとえば、1000行になったかどうかを書くたびにチェックし 1000行を超えたら、上から10行を削除すると言う方法をとりたいのですが、 今までVBでのプログラムは経験あるのですが、.NETもRichTextBoxも 初めて使うので、分からないんです。 どうかご教授お願い致します。 | ||||||||
|
投稿日時: 2005-09-21 16:57
今日は
一行消すので有れば下記のようにすれば消えると思います。 Dim l as integer=行 RichText.Lines[l].Remove(0,logtext.Lines[l].Length) 又、複数行を同時に削除の時は、削除数を複数行分にすれば出来るかも、 試していませんが。 | ||||||||
|
投稿日時: 2005-09-21 17:11
お世話になります。
こんな感じでしょうか。
| ||||||||
|
投稿日時: 2005-09-21 17:24
あるいは、行番号から文字インデックスを取得してSelectし、SelectedTextを空文字列にするとか。
問題は、行番号から文字インデックスを取得する手段が、.NET 1.0/1.1ではSendMessage(EM_LINEINDEX)に頼るしかない点ですが。 | ||||||||
|
投稿日時: 2005-09-21 22:10
しょっぽい方法
private void RemoveLine(RichTextBox rt, int maxlength) { if (rt.Lines.Length > 10) { rt.Select(0, rt.Lines[0].Length + 1); rt.SelectedText = string.Empty; } } | ||||||||
|
投稿日時: 2005-09-22 16:03
お世話になります。お返事ありがとうございました。
'10行削除 RichTextBox1.Lines(10).Remove(0, RichTextBox1.Lines(10).Length) ↑残念ながら、何も変わりませんでした。 1つのログの長さが数行にわたるため、1000行以上を判定して ループで再描画すると時間がかかって実装不可能です。 Mid$等で上書きする方法もやってみましたが、やはり動きがにぶく また、追加行にフォーカスを合わせたいのですが、この方法で上書きすると 一番上にカーソルが移動してしまいます。 こうなると最悪1000行になったらクリアするという方法しかないのですが、 これは本来やりたい事とはかなり違ってきます。 リッチテキストボックスがMAXを超え、書けないと言う判断とかは出来るんでしょうか。 もう納期がせまっていて本当に困っています。 宜しくお願い致します。 | ||||||||
|
投稿日時: 2005-09-22 16:40
お世話になります。
RichTextBox1.Lines.Lengthで今何行あるかは、取得できます。 | ||||||||
|
投稿日時: 2005-09-22 17:15
こんにちは、じゃんぬ です。
少々厳しいことを書くかもしれません...
他人のソースを利用する際は、理解した上で使うようにしませんか? というのも、貴方自身が理解できないものは保守できません。 で、リファレンスを見てください。(わからない時は説明書は見ますよね?) String.Remove メソッド で、先に提示されたソースでは中身は何も変わらないことに気づくハズです。 そう、Remove メソッドの [結果] を受け取ってませんもの。 意味のないステートメントが、ただそこに佇んでるだけですよね。
本当に急いでるなら、掲示板で聞いてちゃまずいと思いませんか? 理由は確実性がないばかりか、即時性もないからです。 本来は有償サポートというものになります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |