C #Windows表单应用程序如何删除所选的列表框行和文本文件

时间:2017-01-12 23:21:04

标签: c# listbox

我有一个功能有问题。功能" Usun"必须删除列表框中的两行和来自txt文件的相同数据**任何人都可以帮助我吗?

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**
        }
    }
}

1 个答案:

答案 0 :(得分:0)

  

功能&#34; Usun&#34;必须删除列表框中的两行和来自txt文件的相同数据**任何人都可以帮助我吗?

您需要从文件中读取行并存储在List<string>内存中。您还需要将DataSource的{​​{1}}属性设置为这些行。如果要删除一行,请将其从内存中的ListBox中删除。然后将整个列表写回文件。然后重置List<string>的{​​{1}}属性。

这是一个例子。在这个例子中,我使用&#34; 1&#34;,&#34; 2&#34;创建一个文件。和&#34; 3&#34;作为线条。然后,当用户点击按钮时,我删除&#34; 1&#34;从内存列表中将列表写入文件。然后我刷新列表框。

DataSource