Je pars du principe que tu as lu le tuto que je t'ai mis en lien hier.
Alors on a 2 fichiers avec la même structure:
- Une ligne d'entête
- 3 colonnes séparées par une tabulation
- une de nombres entiers
- une de texte
- une de date
Col1 Col2 Col3
1 Nom 1 01/02/2018
2 Nom 2 03/04/2019
3 Nom 3 05/06/2020
et
Entier Nom Date
4 Nom 4 07/08/2018
5 Nom 5 09/10/2019
6 Nom 6 11/12/2020
Comme je te l'ai dit plus haut, on écrit une classe qui correspond à ces enregistrements
public class ExempleEvaka : INotifyPropertyChanged
{
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
private void GenerePropertyChanged(params string[] Proprietes)
{
if (this.PropertyChanged != null)
foreach(string p in Proprietes)
PropertyChanged(this, new PropertyChangedEventArgs(p));
}
#endregion
/// <summary>
/// Constructeur de la classe
/// </summary>
/// <param name="Nombre"></param>
/// <param name="LeNom"></param>
/// <param name="LaDate"></param>
public ExempleEvaka(int Nombre, string LeNom, DateTime LaDate)
{
Nom = LeNom;
Entier = Nombre;
Date = LaDate;
}
#region Propriétés
private int entier;
/// <summary>
/// Nombre entier
/// </summary>
public int Entier
{
get { return entier; }
set
{
if (entier != value)
{
entier = value;
GenerePropertyChanged("Entier");
}
}
}
private string nom;
/// <summary>
/// Nom
/// </summary>
public string Nom
{
get { return nom; }
set
{
if (nom != value)
{
nom = value;
GenerePropertyChanged("Nom");
}
}
}
private DateTime date;
/// <summary>
/// Date
/// </summary>
public DateTime Date
{
get { return date; }
set
{
if (date != value)
{
date = value;
GenerePropertyChanged("Date");
}
}
}
#endregion
}
et là le code, qui, à partir d'un tableau de chemins de fichiers, lit, concatène et affiche les contenus
string[] filenames = { Path.Combine(Application.StartupPath, "Fichier 1.txt"), Path.Combine(Application.StartupPath, "Fichier 2.txt") }; //simule la sélection des 2 fichiers dans un openfiledialog
List<ExempleEvaka> maListe = new List<ExempleEvaka>();
foreach(string fichier in filenames)//on itère chaque chemin
foreach(string ligne in File.ReadAllLines(fichier).Skip(1)) // on itérèe chaque ligne du fichier correspondant, sauf la première
{
string[] valeurs = ligne.Split('\t'); //on découpe la ligne
int nombre = Convert.ToInt32(valeurs[0]); //on convertit les données
DateTime date = Convert.ToDateTime(valeurs[2]);
maListe.Add(new ExempleEvaka(nombre, valeurs[1], date)); //on ajoute un enregistrement à la liste
}
exempleEvakaBindingSource.DataSource = maListe;
Ensuite, pour remplir la base de données, c'est à partir de la liste qu'il faut le faire, le champ de type entier et le champ de type DateTime sont déjà dans ces types.
Je vous met le code
Avec ce code j'arrive qu'afficher le contenu d'un seul fichier les autres ne s'affiche pas