[英]C# Saving multiple textbox's, into one .txt file
好的,首先,我是C#的入门者(完全是编程的入门者),并且在google上进行了完全搜索之后,我找不到关于此的解决方案。
因此,我需要做的是:我有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;
噢,男孩...我真的很抱歉英语拼写,它不是我的主要意思(您注意到了那个...)。 这天来这个问题真让人难受...
您可以(应该)首先为每个字段创建属性,如下所示:
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.
}
}
您是否需要能够读取txt文件的内容,还是仅用于存储? 如果是后者,则可以考虑创建一个封装所有属性(例如Person,Employee等...)的可序列化类,然后将这些字段绑定到表单字段。 然后,您只需要将类/对象序列化为一个并将其存储到文本文件中,而不必对每个单独的字段进行sw.Writeline。
我认为最简单的方法(因为您是初学者)是创建一个字符串数组,该字符串数组可以容纳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。 这些值可以是您喜欢的任何值,只要您正确读回即可。
由于您一般都不熟悉编程,因此我将告诉您初学时应该听到的内容:完全采用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
作为参数的方法,因为雇员“是” person。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.