سؤال

أنا جديد في البرمجة وأواجه بعض الصعوبات.آمل أن أحفظ البيانات التي أقوم بإنشائها (ملف WPF DataGrid) في ملف نصي.

وهذا ما لدي حاليا:

MainWindow.xaml.cs:

private void SaveButton_Click(object sender, RoutedEventArgs e)
{
    string fileName = @"D:\projects\PersonInfos\Files\PersonInfos_Copy.txt";
    PersonInfosTable.ConvertToTXTFile(fileName);
}

PersonInfosTable.cs:

public void ConvertToTXTFile(string fileName)
{
    StringBuilder sb = new StringBuilder();
    System.Text.Encoding Output = null;
    Output = System.Text.Encoding.Default;

    foreach (PersonInfos personinfos in PersonInfoDetails)
    {
        if (PersonInfos.SelectCheckBox == true)
        {
            string line = String.Format("L§" + personinfos.FirstName + "§" + personinfos.LastName + "§");
            sb.AppendLine(line);

            StreamWriter file = new StreamWriter(fileName);
            file.WriteLine(sb);

            file.Close();
        }
    }
}

لسوء الحظ، هذا لا يعمل. PersonInfosDetails هو من النوع ObservationCollections<T> و SelectCheckBox هي خانة الاختيار التي حددها المستخدم، وتشير إلى الملفات التي يريد المستخدم حفظها.

أي أفكار أو اقتراحات؟سأقدر مساعدتك كثيرًا وأشكرك كثيرًا على وقتك!

هل كانت مفيدة؟

المحلول

ليس من الواضح ما هي خاصية SelectCheckBox.ومع ذلك، تحتاج إلى نقل جزء الكتابة من البرنامج الخاص بك خارج الحلقة.داخل الحلقة، ما عليك سوى إضافة معلومات كل شخص إلى مثيل StringBuilder الخاص بك.

 public void ConvertToTXTFile(string fileName)
 {
     StringBuilder sb = new StringBuilder();
     System.Text.Encoding Output = System.Text.Encoding.Default;
     foreach (PersonInfos personinfos in PersonInfoDetails)
     {
         // Collect every personinfos selected in the stringbuilder
         if (personinfos.SelectCheckBox == true)
         {
            string line = String.Format("L§" + personinfos.FirstName + "§" + personinfos.LastName + "§");
            sb.AppendLine(line);
         }
     }

     // Now write the content of the StringBuilder all together to the output file
     File.WriteAllText(filename, sb.ToString())
}

نصائح أخرى

هل جربت كيف:الكتابة إلى ملف نصي (دليل البرمجة C#)?

كما أن الكود الذي قدمته لن يعمل إلا إذا SelectCheckBox هي خاصية ثابتة لل PersonInfos فصل.ربما سيتعين عليك تغيير if بيان ل

if (personInfos.SelectCheckBox == true)
{
    // ...
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top