That is a piece of this code, just look about it,may be it will be better for you.
private void load_courbes()
424. {
425. bool dateLu = false;
426. XDate axeX;
427. // ouvre la boite de choix de fichier
428. OpenFileDialog open_csv = new OpenFileDialog();
429. open_csv.Filter = "Fichiers de données|*.csv";
430. open_csv.Title = "Selectionner le fichier à visualiser";
431. open_csv.ShowDialog();
432. // récupére le nom et le chemin choisi
433. if (open_csv.FileName.ToString != "")
434. {
435. string FichierALire = open_csv.FileName;
436. if (System.IO.File.Exists(FichierALire))
437. {
438. // on vide les anciens points et on décoche les combos
439. initform();
440. try {
441. StreamReader sr = new StreamReader(FichierALire, System.Text.Encoding.Default);
442. string ligne = sr.ReadLine();
443. //(s'en servir pour nommer directement le nom des courbes, plus souple pour le futur)
444. //--- Traitement du fichier de données ligne par ligne ---
445. while (!sr.EndOfStream()) {
446. ligne = sr.ReadLine();
447. string valeur = ligne.Split(ChrW(59))(0);
448. System.DateTime x1 = (System.DateTime)valeur;
449. axeX = x1.ToOADate();
450. // archive la premiére date lu pour démarrer l'axe X
451. if (!dateLu)
452. {
453. minX = axeX;
454. dateLu = true;
455. }
456.
457. // enregistre les autres points dans les courbes
458. // poids de la mousse
459. valeur = ligne.Split(ChrW(59))(1);
460. if (valeur != "") P1.Add(axeX, (double)valeur);
461. // t mousse
462. valeur = ligne.Split(ChrW(59))(2);
463. if (valeur != "") T1.Add(axeX, (double)valeur);
464. // hr mousse
465. valeur = ligne.Split(ChrW(59))(3);
466. if (valeur != "") HR1.Add(axeX, (double)valeur);
467. // t four
468. valeur = ligne.Split(ChrW(59))(4);
469. if (valeur != "") T2.Add(axeX, (double)valeur);
470. // hr four
471. valeur = ligne.Split(ChrW(59))(5);
472. if (valeur != "") HR2.Add(axeX, (double)valeur);