2017-01-12 8 views
1

1つの関数に問題があります。機能 "Usun"は、リストボックス内の行とtxtファイルから同じデータを削除する必要があります**誰でも助けてくれますか? 「Usunは」リストボックス内の行とtxtファイルから同じデータの両方を削除する必要がありますC#Windowsフォームアプリケーション選択したリストボックスの行とテキストファイルを削除する方法

using System; 

namespace BazaKlientow2 
{ 
    public partial class Form1 : Form 
    { 
     private Klient[] lista = new Klient[1]; 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

    private void Write(Klient obj) 
    { 
     StreamWriter sw = new StreamWriter("Klienci.txt"); 
     sw.WriteLine(lista.Length + 1); 
     sw.WriteLine(obj.Imie); 
     sw.WriteLine(obj.Nazwisko); 
     sw.WriteLine(obj.Firma); 
     sw.WriteLine(obj.NIP); 

     for(int x = 0; x <lista.Length; x++) 
     { 
      sw.WriteLine(lista[x].Imie); 
      sw.WriteLine(lista[x].Nazwisko); 
      sw.WriteLine(lista[x].Firma); 
      sw.WriteLine(lista[x].NIP); 

     } 
     sw.Close(); 

    } 
    private void Read() 
    { 

     StreamReader sr = new StreamReader("Klienci.txt"); 
     lista = new Klient[Convert.ToInt32(sr.ReadLine())]; 

     for (int x = 0; x < lista.Length; x++) 
     { 
      lista[x] = new Klient(); 
      lista[x].Imie = sr.ReadLine(); 
      lista[x].Nazwisko = sr.ReadLine(); 
      lista[x].Firma = sr.ReadLine(); 
      lista[x].NIP = sr.ReadLine(); 

     } 
     sr.Close(); 
    } 
     private void Display() 
    { 
     listaKlientow.Items.Clear(); 
      for(int x=0; x < lista.Length; x++) 
      { 
       listaKlientow.Items.Add(lista[x].ToString()); 
      } 
    } 
     private void ClearForm() 
     { 
      txtImie.Text = String.Empty; 
      txtNazwisko.Text = String.Empty; 
      txtFirma.Text = String.Empty; 
      txtNip.Text = String.Empty; 

     } 

     private void dodaj_Click(object sender, EventArgs e) 
     { 
      Klient obj = new Klient(); 
      obj.Imie = txtImie.Text; 
      obj.Nazwisko = txtNazwisko.Text; 
      obj.Firma = txtFirma.Text; 
      obj.NIP = txtNip.Text; 

      Write(obj); 
      Read(); 
      Display(); 
      ClearForm(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      Read(); 
      Display(); 
     } 

     private void sortuj_Click(object sender, EventArgs e) 
     { 
      Sortowanie(); 
      Display(); 

     } 
     private void Sortowanie() 
     { 
      Klient temp; 
      bool swap; 
      do 
      { 
       swap = false; 

       for(int x=0;x<lista.Length -1;x++) 
       { 
        if(lista[x].Imie.CompareTo(lista[x+1].Nazwisko) >0) 
        { 
         temp = lista[x]; 
         lista[x] = lista[x + 1]; 
         lista[x + 1] = temp; 
         swap = true; 
        } 
       } 
      } while (swap == true); 
     } 

     private void usun_Click(object sender, EventArgs e) 
     { 
      Usun(); 
     } 
     private void Usun() 
     { 
      **//i cant do this. this function must delete both line in listbox and the same data from txt file** 
     } 
    } 
} 
+0

問題のある部分について説明できますか?あなたの 'Usun'機能は空白なので、まだ試していないようです。 StackOverflowは、特定の、ターゲットを絞った質問に答えるのを助けるためのもので、あなたのために仕事をしません。 –

答えて

0

機能**誰も私を助けることができますか?

ファイルから行を読み取ってから、List<string>メモリに保存する必要があります。また、ListBoxDataSourceプロパティをこれらの行に設定する必要があります。行を削除する場合は、メモリ内のList<string>から行を削除します。次に、リスト全体をファイルに書き戻します。次にListBoxDataSourceプロパティをリセットします。

ここは例です。この例では、行として「1」、「2」、「3」のファイルを作成します。ユーザーがボタンをクリックすると、メモリ内のリストから「1」が削除され、リストがファイルに書き込まれます。次に、リストボックスをリフレッシュします。

public partial class Form1 : Form { 

    private List<string> linesInFile; 
    public Form1() { 

     InitializeComponent(); 

     File.WriteAllLines("Lines.txt", new string[] { "1", "2", "3" }); 

     this.linesInFile = File.ReadAllLines("Lines.txt").ToList(); 
     this.listBox1.DataSource = this.linesInFile; 
    } 

    private void Remove_Click(object sender, EventArgs e) { 

     this.linesInFile.Remove("1"); 
     File.WriteAllLines("Lines.txt", this.linesInFile); 
     this.listBox1.DataSource = null; 
     this.listBox1.DataSource = this.linesInFile; 
    } 
} 
関連する問題