这段代码有什么问题?试图让我的文本插入文本框的开头而不是底部。
private void execute_Click(object sender, EventArgs e){ startFinshBox.Text = "Start Time: " + printTime()+""; startFinshBox.Text.Insert(0,printTime()+": Retrieving Results...\n"); }
但它不会将第二行插入rtb。我已尝试使用startFinishBox.SelectionStart = 0,它没有任何区别。我错过了别的什么吗?
谢谢,Psy
答案 0 :(得分:4)
startFinshBox.Text
是一个字符串,它是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");
}
答案 1 :(得分:0)
TextBox上的SelectionStart
属性将确定将从中选择或插入文本。
使用此代码在文本框控件的开头插入代码:
TextBox.SelectionStart = 0;
TextBox.SelectedText = "Start time: " + printTime();
答案 2 :(得分:0)
ShowText 在 RichTextBox 的顶部插入一个新行。 Invoke 使您能够从另一个线程调用它。 LineLimit 在达到 LineLimit 后删除最后一行。 如果您将 RichTextBox_ContentsResized 事件处理程序添加到您的控件中,它会自动调整其大小。
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);
}