从列表框创建一个 txt 但没有最后一个空行

Creating a txt from listbox but without the last blank line

感谢您的帮助! 从列表框创建 txt 时,生成的 txt 带有最后一个空行,这是我的代码:

private void button1_Click(object sender, EventArgs e)
{
    SaveFileDialog lsd = new SaveFileDialog();
    if (lsd.ShowDialog() == DialogResult.OK)
    {
        StreamWriter writer = new StreamWriter(lsd.FileName + ".TXT");
        for (int i = 0; i < listBox1.Items.Count; i++)
        {
      
            writer.WriteLine(listBox1.Items[i]);
        }

        writer.Close();
    }
    lsd.Dispose();
} 

关于如何避免生成最后一行的任何想法?

再次感谢您的帮助!

怎么样

  for (int i = 0; i < listBox1.Items.Count; i++)
    {
        if(i == listBox1.Items.Count - 1 && listBox1.Items[i].Length == 0)
            break;
        writer.WriteLine(listBox1.Items[i]);
    }

即 - 如果它是最后一行且为空白则忽略它

StreamWriter.WriteLine 将文本表示写入字符串的一段字符,后跟一个行终止符。因此,您可以通过对最后一项使用 StreamWriter.Write 来避免生成最后一行。

int lastIndex = listBox1.Items.Count - 1;
for (int i = 0; i < lastIndex; i++)
{
    writer.WriteLine(listBox1.Items[i]);
}

writer.Write(listBox1.Items[lastIndex]);

Reference.

    private void button1_Click(object sender, EventArgs e)
    {
        if (listBox1.Items.Count < 1)
            return;

        using (SaveFileDialog lsd = new SaveFileDialog())
        {
            lsd.AddExtension = true;
            lsd.DefaultExt = "txt";
            lsd.Filter = "Text Files|*.txt";

            if (lsd.ShowDialog() == DialogResult.OK)
            {
                using (StreamWriter writer = new StreamWriter(lsd.FileName))
                {
                    int i;
                    for (i = 0; i < listBox1.Items.Count - 1; i++)
                    {
                        writer.WriteLine(listBox1.Items[i]);
                    }

                    writer.Write(listBox1.Items[i]);
                }
            }
        }
    }