【问题标题】:Saving multiple pieces of form input to a file将多条表单输入保存到文件中
【发布时间】:2013-01-12 15:56:44
【问题描述】:

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

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

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

【问题讨论】:

  • 完全取决于你想如何保存它!
  • 你想从textbox保存什么文件扩展名?
  • 追加到一个文件和.dat或txt

标签: c# winforms file-io


【解决方案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();
        }
    }

}

【讨论】:

  • 谢谢你这是我用的,它工作!感谢大家的帮助,非常感谢
【解决方案2】:

然后将这两个texbox连接起来;

File.WriteAllText(saveFileDialog1.FileName, tB1.Text + Environment.NewLine + tB2.Text );

【讨论】:

    【解决方案3】:

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

    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);
    

    【讨论】:

      【解决方案4】:

      最好的方法可能是在您的表单中创建一个方法,该方法将包含来自 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 或其他格式)。但是如果你只是在做一个纯文本文件,这可能是最简单的。不过这取决于你。

      【讨论】:

      • 为了清楚起见,我想将众多文本框中的所有输入保存到一个文件中,例如人们将个人信息输入到名字、姓氏等表格中
      • 是的,这肯定有助于将其输出为字符串的方法。我将在我的回答中添加一个示例,以便您对该怎么做有一个基本的了解。
      • 我也希望它在单击按钮时保存抱歉
      • 没关系。如果您想将其保存在代码中的多个位置,使用此方法将有所帮助。任何时候你想保存它,只需调用该方法作为你要输出到文件的文本。
      【解决方案5】:

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

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

      改用File.AppendAllText which

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

      【讨论】:

        【解决方案6】:

        我们开始,使用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));
                }
            }
        

        【讨论】:

          猜你喜欢
          • 2016-12-22
          • 1970-01-01
          • 2013-04-23
          • 1970-01-01
          • 1970-01-01
          • 2018-06-11
          • 1970-01-01
          • 2015-11-02
          • 1970-01-01
          相关资源
          最近更新 更多