• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z przyciskiem usun uzytkownika

VPS Starter Arubacloud
0 głosów
194 wizyt
pytanie zadane 25 września 2022 w C# przez AtomBari Początkujący (440 p.)

Witam, po pierwsze zanim zacznę to prowadzę naukę w szwecji dlatego opisy są nie po polsku. Uczę się od 2,3 tyg więc nie wszystko wiem co i jak także prosiłbym o bardziej jasne wytłumaczenie błędów jakie popełniam.  

Mam mały problem z przyciskiem usuń użytkownika (Ta_bortknap_Click). Nie działa i nie wiem jak to zrobić.

Drugi problem to wyszukiwanie (Sökknap_Click) Aktualnie jest tak że mogę wyszukiwać jedynie po Imieniu i jak zrobić aby wyszukiwać po nr telefonu czy mejlu itd?

namespace Inlämningsuppgift_1
{
    public partial class Form1 : Form
    {
        //Vägen till filen
        public string path = @"C:\temp\AdressBok.txt";


        public Form1()
        {
            InitializeComponent();
        }

        private void Avslutaknap_Click(object sender, EventArgs e)
        {
            //Stänger ner programmet
            this.Close();
        }

        private void Rensaknap_Click(object sender, EventArgs e)
        {
            //Rensar listBox
            listBox1.Items.Clear();
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
            textBox4.Clear();
            textBox5.Clear();
            textBox6.Clear();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Skapar txt fillen
            var file = @"C:\temp\AdressBok.txt";
            if (!File.Exists(file))
                File.Create(file);

            Loading();

            //Ändrad FormBorderStyle till FixedSingle så att man kan inte ändra storleken
            //samt MaximizeBox to False
        }

        private void Registeraknap_Click(object sender, EventArgs e)
        {
            //Läser in klassen och läggs till värde 
            Person person = new Person(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text,
               textBox6.Text);

            //Om Register metoden går genom då rensas alla rutor
            if (person.Register())
            {
                listBox1.Items.Add(person.Name);
                //Rensar textbox efter man har tryck register kanpen
                textBox1.Clear();
                textBox2.Clear();
                textBox3.Clear();
                textBox4.Clear();
                textBox5.Clear();
                textBox6.Clear();
            }
        }

        private void Uppdatera_knapp_Click(object sender, EventArgs e)
        {
            //Uppdaterar kontakt som redan finns
            List<string> linesToUp = new List<string>();

            string Name = textBox1.Text;
            string Gatu = textBox2.Text;
            string Postnr = textBox3.Text;
            string Postort = textBox4.Text;
            string Telefon = textBox5.Text;
            string Email = textBox6.Text;
            string line;
            string lineUpdate = ($"{Name}, {Gatu}, {Postnr}, {Postort}, {Telefon}, {Email}");

            using (StreamReader sr = new StreamReader(path))
            {
                while ((line = sr.ReadLine()) != null)
                {
                    if (line.Contains(Name))
                    {
                        line = lineUpdate;
                        linesToUp.Add(line);
                    }
                    else linesToUp.Add(line);
                }
            }
            using (StreamWriter sw = new StreamWriter(path))
            {
                foreach (var i in linesToUp)
                {
                    sw.WriteLine(i);
                }
            }

            //Person uppdaterad = new Person(Name, Gatu, Postnr, Postort, Telefon, Email);
            //personer.Add(uppdaterad);
            MessageBox.Show("Sparat !");
        
        }
    

        private void Ta_bortknap_Click(object sender, EventArgs e)
        {
            //Raderar kontakt
            List<string> linesToKeep = new List<string>();
            string Name = textBox1.Text;
            string Gatu = textBox2.Text;
            string Postnr = textBox3.Text;
            string Postort = textBox4.Text;
            string Telefon = textBox5.Text;
            string Email = textBox6.Text;
            string line;
            string lineDelete = ($"{Name}, {Gatu}, {Postnr}, {Postort}, {Telefon}, {Email}");


            using (StreamReader sr = new StreamReader(@"C:\temp\AdressBok.txt"))
            {
                while ((line = sr.ReadLine()) != null)
                {
                    if (line.CompareTo(lineDelete) != 0)
                    {

                        linesToKeep.Add(line);
                    }
                }
            }
            using (StreamWriter sw = new StreamWriter(@"C:\temp\AdressBok.txt"))
            {
                foreach (var i in linesToKeep)
                {
                    sw.WriteLine(i);
                }
            }
            MessageBox.Show("Raderat !");
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            List<string> lines = File.ReadAllLines(@"C:\temp\AdressBok.txt").ToList();
            Loading();




            foreach (string a in lines)//Foreach-loop som går igenom hela textfilen och kategoriserar texten i olika index. 
            {
                string[] vektor = a.Split(new string[] { "," }, StringSplitOptions.None);
                string Name = vektor[0];
                string Adress = vektor[1];
                string Zipcode = vektor[2];
                string Locality = vektor[3];
                string Phone = vektor[4];
                string Email = vektor[5];



                if (listBox1.SelectedItem.ToString() == Name.ToString())
                {
                    MessageBox.Show(Name.ToString() + " " + Adress.ToString() + " " + Zipcode.ToString() + " " + Locality.ToString() + " " + Phone.ToString() + " "
                        + Email.ToString());

                    textBox1.Text = Name.ToString();
                    textBox2.Text = Adress.ToString();
                    textBox3.Text = Zipcode.ToString();
                    textBox4.Text = Locality.ToString();
                    textBox5.Text = Phone.ToString();
                    textBox6.Text = Email.ToString();
                }
            }
        }

        private void Ladda_uppknap_Click(object sender, EventArgs e)
        {
            //Tömmer tidigare sökresultat
            listBox1.Items.Clear();

            //Vissar allt från txt filen i listBoxen
            List<string> lines = File.ReadAllLines(path).ToList();
            foreach (string linet in lines)
            {
                listBox1.Items.Add(linet);
            }
        }

        private void Sökknap_Click(object sender, EventArgs e)
        {
            ////Söker om namnet finns i bla txt filen och då visas i vänstra rutan (listbox).

            string text = textBox7.Text;
            listBox1.Items.Clear();

            List<string> lines = File.ReadAllLines(@"C:\temp\AdressBok.txt").ToList();
            foreach (string a in lines)//Foreach-loop som går igenom hela textfilen och kategoriserar texten i olika index. 
            {
                string[] vektor = a.Split(new string[] { "," }, StringSplitOptions.None);
                string Name = vektor[0];
                string Adress = vektor[1];
                string Zipcode = vektor[2];
                string Locality = vektor[3];
                string Phone = vektor[4];
                string Email = vektor[5];

                if (Name.ToLower() == textBox7.Text.ToLower())
                {
                    listBox1.Text = vektor[0];
                    listBox1.Items.Add(Name.ToString());
                }

            }
        }

        ////Vid starten läser allt från txt filen och lägger till listan
        public void Loading()
        {
            StreamReader sr = new StreamReader(path);
            string line = "";
            while (!sr.EndOfStream)
            {
                line = sr.ReadLine();
                var array = line.Split(',');
                string Name = array[0];
                string Adress = array[1];
                string Postnr = array[2];
                string Postort = array[3];
                string Telefon = array[4];
                string Email = array[5];
            }
            sr.Close();
        }
    }
}

 

1 odpowiedź

+1 głos
odpowiedź 1 października 2022 przez Szabranigdo Obywatel (1,370 p.)

1 - Filtruj listę

2 - Usuń zbędne elementy

3 - Zrób kopie pliku pod nazwą jakiegoś tempa

4 - użyj  try/catch/finally

4a - Usuń plik danych

4b - Zrób zrzut danych z listy do pliku

4c - W razie powodzenia usuń tempa

4d - W razie niepowodzenia przywróć plik z tempa

Usuwanie przez index lub wartość

internal class Program
    {
        public class PolaListy
        {
            public string imie { get; set; }
            public string nazwisko { get; set; }

            public string email { get; set; }
        }



        static void Main(string[] args)
        {
            List<PolaListy> ListaOsobowa = new List<PolaListy>();

            PolaListy pola01 = new PolaListy();
            pola01.imie = "Tom";
            pola01.nazwisko = "White";
            pola01.email = "abc@gmail.com";
            ListaOsobowa.Add(pola01);

            PolaListy pola02 = new PolaListy();
            pola02.imie = "John";
            pola02.nazwisko = "Doe";
            pola02.email = "ccc@gmail.com";
            ListaOsobowa.Add(pola02);

            PolaListy pola03 = new PolaListy();
            pola03.imie = "Tim";
            pola03.nazwisko = "Berton";
            pola03.email = "ber@gmail.com";
            ListaOsobowa.Add(pola03);

            PolaListy pola04 = new PolaListy();
            pola04.imie = "Agnes";
            pola04.nazwisko = "Moon";
            pola04.email = "ooo@gmail.com";
            ListaOsobowa.Add(pola04);


            //delete by index
            int licznik = 0;
            foreach (var item in ListaOsobowa)
            {
                Console.WriteLine($@"index = {licznik} | imie: {item.imie} | nazwisko: {item.nazwisko} | email: {item.email}");
                licznik++;
            }


            ListaOsobowa.RemoveAt(1);
            Console.WriteLine();

            licznik = 0;
            foreach (var item in ListaOsobowa)
            {
                Console.WriteLine($@"index = {licznik} | imie: {item.imie} | nazwisko: {item.nazwisko} | email: {item.email}");
                licznik++;
            }
            Console.WriteLine();

            //delete by value
            Console.Write("Podaj imie:");
            string imie = Console.ReadLine();

            foreach (var item in ListaOsobowa.ToList())
            {
                if (item.imie.SequenceEqual(imie))
                {
                    ListaOsobowa.Remove(item);
                }
                else
                {
                    continue;
                }
            }



            licznik = 0;
            foreach (var item in ListaOsobowa)
            {
                Console.WriteLine($@"index = {licznik} | imie: {item.imie} | nazwisko: {item.nazwisko} | email: {item.email}");
                licznik++;
            }
            Console.WriteLine(ListaOsobowa.Count);
            Console.WriteLine();
        }
    }

Odśwież listę w oknie.

Jak będę miał chwile i dalej Cię to interesuje, to wrzucę ci taki mini silniczek wyszukujący, który jakiś czas temu na szybko pisałem właśnie do List<> tyle że w WPF. Można go szybko zaadaptować.

 

Podobne pytania

0 głosów
0 odpowiedzi 99 wizyt
pytanie zadane 4 czerwca 2019 w C# przez Cureit Nowicjusz (140 p.)
0 głosów
1 odpowiedź 142 wizyt
pytanie zadane 6 marca 2023 w C i C++ przez martinez369 Początkujący (460 p.)
0 głosów
0 odpowiedzi 101 wizyt
pytanie zadane 1 maja 2023 w C i C++ przez martinez369 Początkujący (460 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...