好的,所以我试图在表单中创建一个像文本框一样的"控制台",但是一旦你到达底部,可以向上滚动,它只会删除顶线,我有一些困难.到目前为止,当它达到最低点时,它会删除顶线,但只有一次,它只是正常运行.这是我的功能:
StringBuilder sr = new StringBuilder();
public void writeLine(string input)
{
string firstline = "";
int numLines = Convert.ToString(sr).Split('\n').Length;
if (numLines > 15) //Max Lines
{
sr.Remove(0, Convert.ToString(sr).Split('\n').FirstOrDefault().Length);
}
sr.Append(input + "\r\n");
consoleTxtBox.Text = Convert.ToString(sr) + numLines;
}
Run Code Online (Sandbox Code Playgroud)
如果有人能解决这个问题会很好,谢谢
卢卡斯
首先,你的解决方案有什么问题:它不起作用的原因是它删除了行的内容,但它忽略\n了最后的内容.添加1应修复:
sr.Remove(0, Convert.ToString(sr).Split('\n').FirstOrDefault().Length+1);
// ^
// |
// This will take care of the trailing '\n' after the first line ---+
Run Code Online (Sandbox Code Playgroud)
现在要做一个更简单的方法:你需要做的就是找到第一个\n,并在它之后获取子串,如下所示:
string RemoveFirstLine(string s) {
return s.Substring(s.IndexOf(Environment.NewLine)+1);
}
Run Code Online (Sandbox Code Playgroud)
请注意,即使字符串中没有换行符,即IndexOf返回时-1(此时没有删除任何内容),此代码也不会崩溃.