写入文本文件的问题

时间:2016-05-06 16:43:13

标签: c# wpf

我正在编写一个程序,我希望能够添加Surfer(需要四个字符串FirstNameLastNameDob,{{ 1}})。 (我没有使用Country,因为它对于这个项目来说并不是必需的,尽管使用它可能是更好的做法。)然后我想把我刚刚创建的类写成文本文件,我有一个格式化的字符串。我有两个问题。

  1. 没有将DateTimeDob写入文本文件。

  2. 我不确定如何将每个条目放在新行上。 (我试过了\ n 在我的FileFormat字符串的末尾,并单独在我的结尾 字符串Country

  3. 我尝试这样做的代码是

    toFile

    我的代码是WindowAdd.cs

    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);
    
        }
    }
    

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

      

    John,Barry,Happy,Gilmore ,,

    这是两次尝试的条目

    基本验证正在运行,因此它正在从xaml读入。我知道我可以使用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(); } 并编写代码,通过保存按钮将我的可观察集合中的每个元素发送到文本文件,但如果可能的话,我宁愿以类似于我正在尝试的方法的方式进行,其中我一次在文本文件中保存一个条目而不删除现有元素。

1 个答案:

答案 0 :(得分:1)

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

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

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