C#将多个文本框保存到一个.text文件中

时间:2010-12-04 23:38:28

标签: c# text textbox save

好的,首先,我是C#的初学者(在编程时开始编程),经过谷歌搜索后,我无法找到解决方案。

所以,我需要做的是: 我有14个文本框和几个复选框:

姓名,出生日期,出生地和一个人的一些其他信息,例如...我有一个保存按钮,将所有信息保存在一个.txt或.rtf文件中。每次我在textBox中输入这些信息时,它都会将其保存为在textBoxName中输入的文本命名的文件。

例如:

textBoxName: Petar Milutinovic;
textBoxBirth: 01.11.1991;
textBoxCity: Paracin;

当我点击“保存”按钮时,它会将所有这些信息保存在名为Petar Milutinovic的文件中(与textBoxName同名):

Name: Petar Milutinovic;
Date of Birth: 01.11.1991;
City: Paracin;

哦,男孩......我真的很抱歉英文拼写,不是我的主要(你注意到了......)。这几天这个问题一直很痛苦......

4 个答案:

答案 0 :(得分:1)

您可以(应该)首先为每个字段创建属性:

private string Name
{
    // now you avoid a bunch of references to txtName.Text potentially 
    // throughout your form code.  This makes things more simple if you
    // want to swap out UI elements later on.
    get { return txtName.Text; } 
}

private DateTime DateOfBirth
{
    get { return /*selected date*/; } } 
}

// more properties for each field

现在您只需打开一个文件并开始编写:

private void WriteDataFile( filepath )
{
    // Note: You should handle potential IO errors in a try/catch block
    using( FileStream fs = File.Open( filepath, FileMode.Create )
    using( StreamWriter sw = new StreamWriter( fs ) )
    {
        sw.WriteLine( String.Format( "Name: {0}", this.Name ) );
        sw.WriteLine( String.Format( "Date of Birth: {0}", this.DateOfBirth ) );
        // etc.
    } 
}

答案 1 :(得分:1)

您是否需要能够读取txt文件的内容或仅用于存储?如果是后者,你可以考虑创建一个封装所有属性的可序列化类(例如Person,Employee等......),然后将这些字段绑定到表单字段。然后你只需要将类/对象序列化并存储到文本文件中,而不是必须sw.Writeline每个单独的字段。

答案 2 :(得分:1)

我认为最简单的方法(因为你是初学者)就是创建一个可以容纳14个元素的字符串数组,因为你有14个文本框。

string[] contents = new string[14];
contents[0] = "Name: " + textBoxName.Text;
contents[1] = "City: " + textBoxCity.Text;
contents[2] = "Date of Birth: " + textBoxBirth.Text;
...

然后您可以将其直接保存到文件中:

System.IO.File.WriteAllLines(textBoxName.Text + ".txt", contents);

当然还有其他更有效的方法可以做到这一点,但我认为这种方式是最容易理解的。

(我忘记了你的复选框,但是你可以用这个概念实现同样的目标)

编辑:

对于复选框或单选按钮,您可以使用Checked(或CheckState)属性。

您可以执行以下操作:

contents[0] = checkBox.Checked ? "1" : "0";
contents[1] = radioButton.Checked ? "1" : "0";

其中1表示true,0表示false。只要您正确地阅读它们,这些值可以是您喜欢的任何值。

答案 3 :(得分:0)

由于你是一般的编程新手,我会告诉你我在初学者时应该听到的内容:以OO(面向对象)的方式做到这一点。总有一天,你可能已经足够先进,可以看一下像函数式编程这样的东西,但在那之前,OO是一种可以遵循的方式,它有很多帮助。

那么这个OO是什么东西?好吧, 一切都是对象。

这意味着您正在创建一个Person对象。你是怎么做到的?定义Class

以下是它的工作原理:

class Person
{
    public Person(string name,
                  string age,
                  string city)
    {
        this.Name = name;
        this.Age = age;
        this.City = city;
    }

    public string Name { get; private set; }
    public string Age { get; private set; }
    public string City { get; private set; }

    public void SerializeToFile()
    {
        //Do the serialization (saving the person to a file) here.
    }
}

然后(例如在“保存”按钮中),您可以从文本字段中的值创建Person并保存,如下所示:

private void buttonSave_Click(object sender, EventArgs e)
{
    Person p = new Person(textBoxName.Text,
                          textBoxAge.Text,
                          textBoxCity.Text);
    p.SerializeToFile();
}

这一切看起来都很奇怪,但是现在你可以用更干净的方式做很多事情,比如将这个人保存到数据库中或者将它作为参数传递而不会产生混乱,碎片和难以保存的代码。

作为旁注,这也允许继承:

class Employee : Person
{
    public string Job { get; private set; }
}

请参阅,该类具有与person类相同的代码,但也具有Job属性。作为干净代码的奖励,您可以将Employee传递给以Person作为参数的方法,因为员工“是”一个人。