C# RichTextBox顶部追加新文本

C# RichTextBox顶部追加新文本,c#,visual-studio,logging,append,C#,Visual Studio,Logging,Append,我的C#应用程序中有一个RichtTextBox,向用户显示日志。问题是新插入的文本会在旧文本下方追加,但我想将其追加到旧文本上方 例如,当我附加文本“Newtext”时,它如下所示: RichtTextBox: |--------------------- |Oldtext | |Newtext | |--------------------- |--------------------- |Newtext | |Old

我的
C#
应用程序中有一个
RichtTextBox
,向用户显示日志。问题是新插入的文本
会在旧文本下方追加
,但我想
将其追加到旧文本上方

例如,当我附加文本“Newtext”时,它如下所示:

RichtTextBox

|---------------------
|Oldtext             |
|Newtext             |
|---------------------
|---------------------
|Newtext             |
|Oldtext             |
|---------------------
public void DisplayLog(string logtext)
        {
            if (logtext != "")
            {
                if (this.txtLog.InvokeRequired && !txtLog.IsDisposed)
                {
                    Invoke(new MethodInvoker(delegate()
                        {
                            txtLog.AppendText(DateTime.UtcNow + ": " + logtext + "\n");
                        }));
                }
                else if (!txtLog.IsDisposed)
                {
                    txtLog.AppendText(DateTime.UtcNow + ": " + logtext + "\n");
                }
            }
        }
但它需要像这样:

RichTextBox

|---------------------
|Oldtext             |
|Newtext             |
|---------------------
|---------------------
|Newtext             |
|Oldtext             |
|---------------------
public void DisplayLog(string logtext)
        {
            if (logtext != "")
            {
                if (this.txtLog.InvokeRequired && !txtLog.IsDisposed)
                {
                    Invoke(new MethodInvoker(delegate()
                        {
                            txtLog.AppendText(DateTime.UtcNow + ": " + logtext + "\n");
                        }));
                }
                else if (!txtLog.IsDisposed)
                {
                    txtLog.AppendText(DateTime.UtcNow + ": " + logtext + "\n");
                }
            }
        }
这是我用来填充我的
RichTextBox
的代码:

|---------------------
|Oldtext             |
|Newtext             |
|---------------------
|---------------------
|Newtext             |
|Oldtext             |
|---------------------
public void DisplayLog(string logtext)
        {
            if (logtext != "")
            {
                if (this.txtLog.InvokeRequired && !txtLog.IsDisposed)
                {
                    Invoke(new MethodInvoker(delegate()
                        {
                            txtLog.AppendText(DateTime.UtcNow + ": " + logtext + "\n");
                        }));
                }
                else if (!txtLog.IsDisposed)
                {
                    txtLog.AppendText(DateTime.UtcNow + ": " + logtext + "\n");
                }
            }
        }
谁能帮帮我吗

回答:

使用插入

txtLog.Text =  txtLog.Text.Insert(0,DateTime.UtcNow + ": " + logtext + "\n");

我认为txtlog是RichTextBox,你应该在它前面加上前缀

要做到这一点,请在开始时使用

txtlog .SelectionStart = 0;
txtlog .SelectionLength = 0;
txtlog .SelectedText = (DateTime.UtcNow + ": " + logtext + "\n");

检查此帖子:[1]:该答案不起作用。嗯,使用您的代码后,文本将不再显示在我的RichTextBox中。更正它起作用,只是我自己使用此主题答案发现它: