2017-01-12 5 views
1

У меня есть проблема с одной функцией. Функция «Усунь» должна удалить обе строки в списке и те же данные из файла 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

Функция «Узун» необходимо удалить как строку в ListBox и те же данные текстовый файл ** Может кто-нибудь мне помочь?

Вам необходимо прочитать строки из файла и сохранить их в памяти List<string>. Вам также необходимо установить для этих линий значение DataSource свойства ListBox. Если вы хотите удалить строку, удалите ее из памяти List<string>. Затем напишите весь список обратно в файл. Затем сбросьте значение DataSource объекта ListBox.

Вот пример. В этом примере я создаю файл с «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; 
    } 
}