繁体   English   中英

写入文本文件的问题

[英]Issue with writing to a text file

我正在编写一个想要添加Surfer (该类需要四个字符串, FirstNameLastNameDobCountry )。 (我不使用DateTime因为虽然使用它可能是更好的做法,但对于该项目不是必需的。)然后,我想将刚创建的类写入文本文件,并且为此使用了格式化的字符串。 我有两个问题。

  1. 它没有将DobCountry写入文本文件。

  2. 我不确定如何将每个条目放在新行中。 (我曾经尝试\\ n我的FileFormat字符串的结尾和seperately在我的字符串的结尾toFile

我尝试执行此操作的代码是

public class Surfer
{
    protected string SurferFirstName { get; set; }
    protected string SurferLastName { get; set; }
    protected string SurferDob { get; set; }
    protected string SurferCountry { get; set; }
    public Surfer() { }

    public Surfer(string surferFirstName, string surferLastName, string surferDob, string surferCountry)
    {
        SurferFirstName = surferFirstName;
        SurferLastName = surferLastName;
        surferDob = SurferDob;
        surferCountry = SurferCountry;
    }
    public override string ToString()
    {
        return string.Format("Surfer name:  {0} {1}   Surferdob:  {2} \n Country:  {3}", SurferFirstName, SurferLastName, SurferDob, SurferCountry);
    }
    //for display in the textblock, virtual for inheritance
   /* public virtual string vehicleDetails()
    {
        return string.Format("Make:{0,40} \nModel:{1,40} \nPrice:{2,40} \nYear: {3,40} \nColour: {4,40}, \nMileage: {5,40} \nDescription: {6,40} \nEngine: {7,40}", Make, Model, Price, Year, Colour, Mileage, Description, Engine);
    }*/
    //for formatting to a text file
    public string FileFormat()
    {
        return string.Format("{0},{1},{2},{3} \n", SurferFirstName, SurferLastName, SurferDob, SurferCountry);

    }
}

我的代码是WindowAdd.cs

private void btnSubmit_Click(object sender, RoutedEventArgs e)
{
    //reading in from text boxes
    string fName = txtbxFirstName.Text;
    string lName = txtbxLastName.Text;
    string dob = txtbxDob.Text;
    string country = txtbxCountry.Text;
    //basic validation
    if (fName.Length <2 || lName.Length <2 )
    { 
        MessageBox.Show("first and last name must be entered");
    }
    else if(dob.Length <10 || dob.Length>10)
        MessageBox.Show("Enter dob in the correct format (dd/mm/yyyy)");
    else if(country.Length <3)
        MessageBox.Show("Enter a valid country");
    else
    {
        try
        {
            //sets mainWindow
            MainWindow mainWindow = new MainWindow();
            //creates new surfer class
            Surfer newSurfer = new Surfer(fName, lName, dob, country);
            //adds to observable collection
            mainWindow.surfers.Add(newSurfer);
            //uses FileFormat from the Surfer Class to format in order to add to text file
            string toFile = newSurfer.FileFormat();
            //append to Surfers.Text
            File.AppendAllText("Surfers.Text", toFile);

            //closes window
            this.Close();
        }

我在文本文件中得到的结果是这样的

约翰·巴里(John,Barry),快乐吉尔莫(Gilmore),

这是两个尝试的条目

基本验证正在运行,因此可以从xaml中读取数据。 我知道我可以使用File.WriteAllLines并编写代码以通过保存按钮将可观察到的集合中的每个元素发送到文本文件,但是如果可能的话,我宁愿以与尝试的方法类似的方式进行操作,在此保存一次只输入一个文本文件,而不会删除现有元素。

您的构造函数将变量分配给Dob和Country的方向错误。 您将属性分配给参数,而不是参数分配给属性。

public Surfer(string surferFirstName, string surferLastName, string surferDob, string surferCountry)
        {
            SurferFirstName = surferFirstName;
            SurferLastName = surferLastName;
            surferDob = SurferDob;
            surferCountry = SurferCountry;
        }

对于新行,请使用Quantic上面建议的Environment.NewLine

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM