2

将 Windows 窗体保存到带有几个收集用户输入的文本框的文件的最佳方法是什么。我现在使用这个:

if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                File.WriteAllText(saveFileDialog1.FileName, tB1.Text);
                File.WriteAllText(saveFileDialog1.FileName, tB2.Text);
            }

这对于保存第一个文本框中的输入很好,但是当涉及到另一个时,它不会保存输入的数据。

4

6 回答 6

1

如何连接两个文本框?为了清楚起见,

string forSaving = tB1.Text + "\n" + tB2.Text;
File.WriteAllText(saveFileDialog1.FileName, forSaving);

或者

File.WriteAllText(saveFileDialog1.FileName, tB1.Text + "\n" + tB2.Text);

更新 1

string firstName = "FirstName: " + txtFirstName.Text;
string lastName = "LastName: " + txtLastName.Text;
string personAddress = "FirstName: " + txtAddress.Text;
string details = firstName + "\n" + lastName + "\n" + personAddress;
File.WriteAllText(saveFileDialog1.FileName, tB1.Text + "\n" + details);
于 2013-01-12T15:58:46.380 回答
1

然后连接这两个texbox;

File.WriteAllText(saveFileDialog1.FileName, tB1.Text + Environment.NewLine + tB2.Text );
于 2013-01-12T15:59:32.277 回答
1

最好的方法可能是在您的表单中创建一个方法,该方法将返回一个字符串,其中包含 TextBoxes 中的所有值到您想要的任何格式。像这样的东西会起作用:

File.WriteAllText(saveFileDialog1.fileName, OutputUserInfo());

然后在里面OutputUserInfo()你可以对你想要的数据进行任何格式化,这样你就可以理解它们输入的内容。

编辑示例OutputUserInfo()

private string OutputUserInfo() {
    return  "First Name: " + tbFirstName.Text + Environment.NewLine +
            "Surname: " + tbSurname.Text + Environment.NewLine +
            "Address" + tbAddress.Text + Environment.NewLine;
            // Just keep adding whatever you want on here.
            // Add the descriptions if you want, it will probably help
}

您也可以使用不同的格式(CSV 或其他格式)。但如果你只是在做一个纯文本文件,这可能是最简单的。不过,这取决于你。

于 2013-01-12T16:00:16.293 回答
1

File.WriteAllText 可能不好,因为它会覆盖您的内容。

创建一个新文件,将指定的字符串写入文件,然后关闭文件。如果目标文件已存在,则将其覆盖。

而是选择File.AppendAllText哪个

将指定的字符串附加到文件中,如果文件不存在则创建该文件。

于 2013-01-12T16:17:17.193 回答
1

如果是我,我会使用StreamWriter / StreamReader类,因为它们分别具有WriteLineReadline方法。

即这样的东西

private void button1_Click(object sender, EventArgs e)
{
    if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        using (StreamWriter sw = new StreamWriter(saveFileDialog1.FileName))
        {
            sw.WriteLine(tB1.Text);
            sw.WriteLine(tB2.Text);
            sw.WriteLine(tB3.Text);
            sw.WriteLine(tB4.Text);
            sw.Close();
        }

   }

}

private void button2_Click(object sender, EventArgs e)
{
    if(openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        using (StreamReader sr = new StreamReader(openFileDialog1.FileName))
        {
            tB1.Text = sr.ReadLine();
            tB2.Text = sr.ReadLine();
            tB3.Text = sr.ReadLine();
            tB4.Text = sr.ReadLine();
            sr.Close();
        }
    }

}
于 2013-01-12T16:22:39.350 回答
1

好了,使用Encoding附加所有的字符串。

    private void button1_Click(object sender, EventArgs e)
    {
        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            string line = string.Format("{0},{1}"
            , textBox1.Text
            , textBox2.Text);
            File.AppendAllText(saveFileDialog1.FileName, line, Encoding.GetEncoding(1252));
        }
    }
于 2013-01-12T16:36:32.103 回答