C# 在richtextbox顶部插入

C# 在richtextbox顶部插入,c#,richtextbox,C#,Richtextbox,这个代码有什么问题?试图让文本插入文本框的开头而不是底部 private void execute_Click(object sender, EventArgs e){ startFinshBox.Text = "Start Time: " + printTime()+""; startFinshBox.Text.Insert(0,printTime()+": Retrieving Results...\n"); } 私有void执行\单击(对象发送方,事件参数e){ startFins

这个代码有什么问题?试图让文本插入文本框的开头而不是底部

private void execute_Click(object sender, EventArgs e){ startFinshBox.Text = "Start Time: " + printTime()+""; startFinshBox.Text.Insert(0,printTime()+": Retrieving Results...\n"); } 私有void执行\单击(对象发送方,事件参数e){ startFinshBox.Text=“开始时间:“+printTime()+”; startFinshBox.Text.Insert(0,printTime()+“:检索结果…\n”); } 但它不会将第二行插入rtb。我也尝试过startFinishBox.SelectionStart=0,但没有什么不同。我还缺什么吗


谢谢,Psy是一个字符串,在C#中是一个不可变的类型
string.Insert()
将作为结果返回修改后的字符串,但如果您的代码不正确,则放弃它。要使其工作,您必须将代码更改为:

private void execute_Click(object sender, EventArgs e){
  startFinshBox.Text = "Start Time: " + printTime()+"";
  startFinshBox.Text = startFinshBox.Text.Insert(0,printTime()+": Retrieving Results...\n");
}

文本框上的
SelectionStart
属性将确定从何处选择或插入文本

使用此代码在文本框控件的开头插入代码:

TextBox.SelectionStart = 0;
TextBox.SelectedText = "Start time: " + printTime();

ShowText在RichTextBox顶部插入新行。 调用使您能够从另一个线程调用它。 LineLimit删除达到LineLimit后的最后一行。 如果将RichTextBox\u ContentsResized eventhandler添加到控件中,则会自动调整其大小

    public bool? ShowText(string pText)
    {
        try
        {
            if (InvokeRequired)
                return Invoke(new Func<string, bool?>(ShowText), pText) as bool?;

            rtbRemoteControl.Text = rtbRemoteControl.Text.Insert(0, $"{DateTime.Now:HH:mm:ss} - {pText}\n");

            var lLineCount = rtbRemoteControl.Lines.Length;
            const int lLineLimit = 500;
            if (lLineCount > lLineLimit)
                rtbRemoteControl.Lines = rtbRemoteControl.Lines.Take(lLineCount - 1).ToArray();
        }
        catch
        {
            return false;
        }
        return true;
    }

    private void RichTextBox_ContentsResized(object pSender, ContentsResizedEventArgs e)
    {
        const int margin = 5;
        var lSender = pSender as RichTextBox;
        if (lSender == null)
            return;
        lSender.ClientSize = new Size(e.NewRectangle.Width + margin,  e.NewRectangle.Height + margin);
    }
公共图书馆?ShowText(字符串pText) { 尝试 { 如果(需要调用) 将Invoke(newfunc(ShowText),pText)作为bool?返回?; rtbRemoteControl.Text=rtbRemoteControl.Text.Insert(0,$“{DateTime.Now:HH:mm:ss}-{pText}\n”); var lLineCount=rtbRemoteControl.Lines.Length; 常数int lLineLimit=500; 如果(lLineCount>lLineLimit) rtbRemoteControl.Lines=rtbRemoteControl.Lines.Take(lLineCount-1.ToArray(); } 抓住 { 返回false; } 返回true; } 私有void RichTextBox_ContentsResized(对象pSender、ContentsResizedEventArgs e) { 常数int边距=5; var lSender=pSender作为RichTextBox; if(lSender==null) 返回; lSender.ClientSize=新尺寸(e.NewRectangle.Width+边距,e.NewRectangle.Height+边距); }
Ahh,我就知道会是这么简单的事情,谢谢!