我正在写一个小的winform程序,它有一个多行文本框和一个“Clear”按钮。我附加到此文本框的每个字符串始终以“\ r \ n”结尾。
textBoxScriptSteps.AppendText(ClickedButton + "\r\n");
我想在每次点击清除按钮时仅删除最后一行。
在谷歌搜索但找不到任何解决方案。 请给我任何帮助。
答案 0 :(得分:3)
这对我有用
HTML标记:
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
代码背后:
protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.Text = TextBox1.Text.Remove(TextBox1.Text.LastIndexOf(Environment.NewLine));
}
答案 1 :(得分:2)
我找到了一种更简单的方法:
TextBox1.Text = TextBox1.Text.Remove(TextBox1.Text.LastIndexOf(Environment.NewLine);
TextBox1.Text = TextBox1.Text.Remove(TextBox1.Text.LastIndexOf(Environment.NewLine);
TextBox1.AppendText("\r\n");
答案 2 :(得分:1)
不要这样做。
保持List<string>
。每次单击“添加”时,都会将该元素添加到列表中。
每次单击“清除”时,都会从末尾删除元素。
使用UpdateText方法设置文本框中的文本。在方法结束时调用UpdateText以添加和清除。
将数据与显示屏分开。
答案 3 :(得分:0)
我建议:
public String RemoveLastLine(String myStr)
{
String result = "";
if (myStr.Length > 2)
{
// Ignore very last new-line character.
String temporary = myStr.Substring(0, myStr.Length - 2);
// Get the position of the last new-line character.
int lastNewLine = temporary.LastIndexOf("\r\n");
// If we have at least two elements separated by a new-line character.
if (lastNewLine != -1)
{
// Cut the string (starting from 0, ending at the last new-line character).
result = myStr.Substring(0, lastNewLine);
}
}
return (result);
}
您可以使用此功能获取没有最后一行的文本
例如,使用RemoveLastLine();
致电"Hello\r\nWorld\r\n"
会给您"Hello\r\n"
因此,每次按下按钮都可以textBoxScriptSteps.Text = RemoveLastLine(textBoxScriptSteps.Text);
。
同样的功能更紧凑:
public String RemoveLastLine(String myStr) {
if (myStr.Length > 2) {
int lastNewLine;
if ((lastNewLine = myStr.Substring(0, myStr.Length - 2).LastIndexOf("\r\n")) != -1)
return (myStr.Substring(0, lastNewLine));
}
return ("");
}