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 文件中