0

ログ ウィンドウを複製しようとしているので、最新のログが一番上に表示されるはずです。したがって、テキストを上部に追加する必要がありますが (問題ありません)、複数の色を使用します (問題があります)。

まず、元のテキストを保存します。(RTF またはテキスト - 両方を試しました) 次に、ユーザー名とメッセージを含む新しいテキストを追加します。ユーザー名とメッセージは別の色にする必要があります。こちらもいつも単線です。

私の方法で得られるのは、古いテキストまたは古い RTF テキストを追加すると、最新の「ログ」のみが表示されることだけです。

public void AddLog(Log log)
{
        try
        {
            string oldText = this.richTextBox1.Rtf;

            this.richTextBox1.Text = log.User + ": " + log.Message + "\n";
            this.richTextBox1.Select(0, log.User.Length);
            this.richTextBox1.SelectionColor = Color.GreenYellow;
            this.richTextBox1.Select(log.User.Length + 2, log.Message.Length);
            this.richTextBox1.SelectionColor = Color.White;
            this.richTextBox1.DeselectAll();
            this.richTextBox1.Rtf += oldText;

        }
        catch { }
}

これは可能ですか?古い RTF テキストは保存されず、古い RTF テキストは新しいテキストの後に追加できないため、おそらく最新のテキストを下に追加する必要がありますが、これは私が望んでいるものではありません。

「RTF」テキストを保存する代わりに、形式 (色) が消えて、1 つの色だけが表示されます。

4

1 に答える 1

2

テストされていませんが、これを試してください

public void AddLog(Log log)
{
    try
    {
        richTextBox1.SelectAll();            
        string oldText = this.richTextBox1.SelectedRtf;

        this.richTextBox1.Text = log.User + ": " + log.Message + "\n";
        this.richTextBox1.Select(0, log.User.Length);
        this.richTextBox1.SelectionColor = Color.GreenYellow;
        this.richTextBox1.Select(log.User.Length + 2, log.Message.Length);
        this.richTextBox1.SelectionColor = Color.White;
        this.richTextBox1.DeselectAll();
        this.richTextBox1.SelectionStart = this.richTextBox1.TextLength;
        this.richTextBox1.SelectedRtf = oldText;
        this.richTextBox1.DeselectAll();

    }
    catch { }
}
于 2013-09-03T21:45:33.480 に答える