Pergunta

Eu sou novo em programação e enfrentar algumas dificuldades.Espero que para salvar os dados, eu estou gerando (um WPF DataGrid) em um arquivo de texto.

Isso é o que eu tenho atualmente:

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

Infelizmente, isso não funciona. PersonInfosDetails é do tipo ObservationCollections<T> e SelectCheckBox é a caixa de verificação seleccionada pelo utilizador, e indica que arquivos que o usuário quer salvar.

Quaisquer ideias ou sugestões?Eu aprecio sua ajuda muito e muito obrigado pelo seu tempo!

Foi útil?

Solução

Não está claro qual é o SelectCheckBox propriedade.No entanto, você precisa mover a parte escrita de seu programa fora do loop.Dentro do loop basta adicionar cada pessoa info para sua instância de 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())
}

Outras dicas

Você já tentou Como:Escrever um Ficheiro de Texto (Guia de Programação C#)?

Além disso, o código fornecido não funciona, a menos que SelectCheckBox é uma propriedade estática do PersonInfos de classe.Você provavelmente vai ter que alterar o if declaração

if (personInfos.SelectCheckBox == true)
{
    // ...
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top