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

Posted

技术标签:

【中文标题】C# 将多个文本框保存到一个 .txt 文件中【英文标题】:C# Saving multiple textbox's, into one .txt file 【发布时间】:2010-12-04 23:38:28 【问题描述】:

好的,首先,我是 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;

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

【问题讨论】:

【参考方案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 代表真,0 代表假。这些值可以是任何你喜欢的值,只要你正确地读回来。

【讨论】:

Tnx,这也很有趣!我已经很好地理解了 Camilo 的解决方案,但这是解决我的问题的好方法 :) Tnx 好的,这很棒,而且很容易学习 :) 单选按钮怎么样?与复选框和文本框的方式相同还是几乎没有什么不同?【参考方案2】:

您可以(应该)首先为每个字段创建属性,如下所示:

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.
     

【讨论】:

您的解决方案可以完美运行,但您不妨简化一下,因为他说他是编程新手 ;) 是的,我正在分析这段代码,我对每个属性有点困惑......我想逐步学习,这就是我加入这个的原因......在教职员工中,他们教给我们很多理论(我知道,但无法将其付诸实践),我学到的只是谷歌和一些 tuts...【参考方案3】:

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

【讨论】:

嗯,是的,我忘了说我以后需要能够读取该文件(并且可能打印每个文件)...【参考方案4】:

由于您通常是编程新手,所以我将告诉您当我还是初学者时应该听到的内容:全部以 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 作为参数的方法,因为员工“是”人。

【讨论】:

是的! Tnx很多,这就是我一直在寻找的!它很容易理解...... IMO,所有学校都应该尝试简化学生的编程......他们所做的只是教我们初学者无法轻易理解的理论。所以这是一个很大的帮助,我现在明白这是如何工作的:) 虽然我也认为简单的解释很好,但有很好的论据来教授理论,请参阅一位非常受人尊敬的程序员和 ***er 同事的这篇文章(听这些有经验的人是少数伪-智慧的捷径):joelonsoftware.com/articles/ThePerilsofJavaSchools.html

以上是关于C# 将多个文本框保存到一个 .txt 文件中的主要内容,如果未能解决你的问题,请参考以下文章

循环遍历 Excel 工作表并使用 C# 将文本保存到 TXT 文件中

将 Windows 窗体列表框保存到文本文件 C#

在 C# 中,如何将文本框、复选框等的值保存在一个文件中?

为 .txt 文件 C# 创建一个“保存”按钮

请问在c# winform中怎么将文本框中的数值保存到数据库中money类型的字段中???

将文本框中的数据保存到文本文件中