从多行文本框中删除最后一行

时间:2014-08-11 18:09:06

标签: c# textbox

我正在写一个小的winform程序,它有一个多行文本框和一个“Clear”按钮。我附加到此文本框的每个字符串始终以“\ r \ n”结尾。

textBoxScriptSteps.AppendText(ClickedButton + "\r\n");

我想在每次点击清除按钮时仅删除最后一行。

在谷歌搜索但找不到任何解决方案。 请给我任何帮助。

4 个答案:

答案 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));
}

来源:http://social.msdn.microsoft.com/Forums/en-US/29118aad-dfec-4453-a653-18fa51d63252/how-to-clear-the-last-line-in-multiline-textbox?forum=vblanguage

答案 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 ("");
}