» »

[C#] Delo z okni - urejanje osebe

[C#] Delo z okni - urejanje osebe

Presidente ::

Pozdravljeni, imam naslednji problem. Namreč, v listBox imam nek seznam oseb in bi rad označeno osebo rad urejal in spremenil njene vhodne podatke.

Imam razred Planinec z naslednjimi atributi
namespace PlaninskaZveza
{

    [Serializable]
    public class Planinec
    {
      
        private string ime;
        private string priimek;
        private string naslov;
        private string drustvo;
public String Ime
        {
            get { return ime; }
            set { ime = value; }
        }
        public String Priimek
        {
            get { return priimek; }
            set { priimek = value; }
        }
public String Naslov
        {
            get { return naslov; }
            set { naslov = value; }
        }
public String Drustvo
        {
            get { return drustvo; }
            set { drustvo = value; }
        }
    }
}



Potem pa imam naslednje metode za Delo s planinci
//dodajanje planinca na seznam
private void btnDodajNaSeznam_Click(object sender, EventArgs e)
        {
            if ((textBoxIme.Text.Length == 0) || (textBoxPriimek.Text.Length == 0) || (textBoxDrustvo.Text.Length == 0) || (textBoxNaslov.Text.Length == 0))

                MessageBox.Show("Vnesti moraš vse podatke planinca!");

            else
            {
                listBoxSeznam.Items.Add( textBoxIme.Text + " " + textBoxPriimek.Text + " " + textBoxNaslov.Text + " " + textBoxDrustvo.Text);
                this.textBoxIme.Clear();
                this.textBoxPriimek.Clear();
                this.textBoxNaslov.Clear();
                this.textBoxDrustvo.Clear();
            }
        }

//shranjevanja seznama v datoteko
private void btnShraniSeznam_Click(object sender, EventArgs e)
        {
            StreamWriter seznam = new StreamWriter("seznamPlanincev.txt");
            foreach (string planinec in this.listBoxSeznam.Items)
                seznam.WriteLine(planinec);
            seznam.Close();
            MessageBox.Show("Seznam je uspešno shranjen v datoteko 'seznamPlanincev'!");
        }

//nalaganje seznama iz datoteke
private void btnNaloziSeznam_Click(object sender, EventArgs e)
        {
            StreamReader seznam = new StreamReader("seznamPlanincev.txt");
            while (!seznam.EndOfStream)
                this.listBoxSeznam.Items.Add(seznam.ReadLine());
            seznam.Close();
            MessageBox.Show("Seznam iz datoteke 'seznamPlaninev' je uspešno naložen v ListBox!");
        }

//brisanje celotnega seznama iz LISTBOXA
private void BrisiSeznam_Click_1(object sender, EventArgs e)
        {
            if (listBoxSeznam.Items.Count != 0)
                if (MessageBox.Show("Ali želiš nepovratno izbrisati ves seznam?", "Izbriši ves seznam",
                MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes);
                    this.listBoxSeznam.Items.Clear();
        }

//odstranjevanje določenega planinca iz seznama v litboxu
private void btnOdstraniIzSeznama_Click(object sender, EventArgs e)
        {
            ListBox.SelectedIndexCollection indeks = listBoxSeznam.SelectedIndices;
            if (indeks.Count == 0)
                MessageBox.Show("Nobena oseba ni izbrana");
            else
            {

                if (MessageBox.Show("Ali želiš izbrano osebo izbrisati iz seznama?", "Izbriši oseboo iz seznama",
                    MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

                    for (int i = indeks.Count - 1; i > -1; i--)
                        listBoxSeznam.Items.RemoveAt(indeks[i]);
            }
        }

//urejanje določenega planinca v seznamu iz listboxa
 private void btnUrediPlaninca_Click(object sender, EventArgs e)
        {
//tukaj pa se mi je ustavilo; rad bi urejal na LISTBOXU izbranega planinca
}


HVALA ZA POMOČ

OmegaM ::

Ok, gledam na hitro. Si pogledal na listboxu za event selecteditem?

Tam lahko izberes glede na index katerega si izbral.
Ni nam lahko, bo pa boljše!!!

Presidente ::

Ja, pa mi javlja napako, zato probavam uporabit
ListBox.SelectedIndexCollection indeks = listBoxSeznam.SelectedIndices;

kateri mi ne javlja napake.

Samo potem pa naprej ne gre

Zgodovina sprememb…

OmegaM ::

Mogoce ....
 int index = listBoxSeznam.SelectedIndixes;


Sedaj pa odvisno kak bi rad iskal.
Lahko tudi poisces string na izbranem indeksu, nato pa glede na string poisces, kar pac rabis.
Ni nam lahko, bo pa boljše!!!

Zgodovina sprememb…

  • spremenilo: OmegaM ()

Presidente ::

Ok, urejanje sem obšel tak, da sem naredil takole, malo okoli preneseno :D

 private void btnUrediPlaninca_Click(object sender, EventArgs e)
        {
            ListBox.SelectedIndexCollection indeks = listBoxSeznam.SelectedIndices;
            if (indeks.Count == 0)
                MessageBox.Show("Nobena oseba ni izbrana");
            else
            {
                textBoxPriimek.Show();
                if (MessageBox.Show("Ali želite spremeniti podatke izbranega planinca", "Uredi planinca",
                 MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    if ((textBoxIme.Text.Length == 0) || (textBoxPriimek.Text.Length == 0) || (textBoxDrustvo.Text.Length == 0) || (textBoxNaslov.Text.Length == 0))

                        MessageBox.Show("Vnesti moraš vse podatke planinca!");

                    else
                    {
                        for (int i = indeks.Count - 1; i > -1; i--)
                            listBoxSeznam.Items.RemoveAt(indeks[i]);
                        listBoxSeznam.Items.Add(textBoxIme.Text + " " + textBoxPriimek.Text + " " + textBoxNaslov.Text + " " + textBoxDrustvo.Text);
                        this.textBoxIme.Clear();
                        this.textBoxPriimek.Clear();
                        this.textBoxNaslov.Clear();
                        this.textBoxDrustvo.Clear();
                    }
            }
        }


Imam pa nov problem, namreč iskanje in primerjanje(po imenu) ter mi ne izpisuje na listbox, čeprav bi naj bilo sintaktično vse pravilno

List<Planinec> iskanPlaninec = new List<Planinec>();
        private void btnIskanjePlaninca_Click(object sender, EventArgs e)
        {
            listBoxIskanje.Items.Clear();
            if (textBoxIme.Text.Length == 0 || textBoxPriimek.Text.Length == 0)
                MessageBox.Show("Za iskanje planinca morate vpisat njegovo ime in priimek!");
            for (int i = 0; i < seznamPlanincev.Count; i++)
            {
                if (seznamPlanincev[i].getIme() == textBoxIme.Text && seznamPlanincev[i].getPriimek() == textBoxPriimek.Text)
                {
                    Planinec novPlaninec = new Planinec();
                    novPlaninec.setIme(seznamPlanincev[i].getIme());
                    novPlaninec.setPriimek(seznamPlanincev[i].getPriimek());
                    novPlaninec.setNaslov(seznamPlanincev[i].getNaslov()); 
                    novPlaninec.setDrustvo(seznamPlanincev[i].getDrustvo());
                    iskanPlaninec.Add(novPlaninec);
                }
            }

            for (int i = 0; i < iskanPlaninec.Count; i++)
            {
                listBoxIskanje.Items.Add(iskanPlaninec[i].getIme() + " " + iskanPlaninec[i].getPriimek() + " " + iskanPlaninec[i].getNaslov() + " " + iskanPlaninec[i].getDrustvo());
            }
        }

      

        private void btnPrimerjajIme_Click(object sender, EventArgs e)
        {
            seznamPlanincev.Sort((IComparer<Planinec>)new PrimerjalnikIme());
            listBoxIskanje.Items.Clear();
            for (int i = 0; i < seznamPlanincev.Count; i++)
            {
                listBoxIskanje.Items.Add(seznamPlanincev[i].getIme() + " " + seznamPlanincev[i].getPriimek() + " " + seznamPlanincev[i].getNaslov() + " " + seznamPlanincev[i].getDrustvo());
            }
        }
    }

Zgodovina sprememb…

Presidente ::

PRIMERJALNIK PA JE TAKŠEN

namespace PlaninskaZveza
{
    class PrimerjalnikIme : IComparer<Planinec>
    {
        public int Compare(Planinec planinec1, Planinec planinec2)
        {
            return String.Compare(planinec1.getIme().ToString(), planinec2.getIme().ToString());
        }
    }
}

darkolord ::

Zakaj pa narediš NOVEGA planinca, ko ga najdeš?

Ravno to je eden glavnih smislov objektnega programiranja - da okrog pošiljaš cele objekte, ne da jih vsakič kopiraš.

Zgodovina sprememb…

  • spremenilo: darkolord ()

Presidente ::

Učim se, zato pa rabim pomoč... :D

darkolord ::

Ok.

Tole:
 for (int i = 0; i < seznamPlanincev.Count; i++)
            {
                if (seznamPlanincev[i].getIme() == textBoxIme.Text && seznamPlanincev[i].getPriimek() == textBoxPriimek.Text)
                {
                    Planinec novPlaninec = new Planinec();
                    novPlaninec.setIme(seznamPlanincev[i].getIme());
                    novPlaninec.setPriimek(seznamPlanincev[i].getPriimek());
                    novPlaninec.setNaslov(seznamPlanincev[i].getNaslov()); 
                    novPlaninec.setDrustvo(seznamPlanincev[i].getDrustvo());
                    iskanPlaninec.Add(novPlaninec);
                }
            }


Lahko nadomestiš z:
iskanPlaninec = seznamPlanincev.Where(p => p.getIme() == textBoxIme.Text && p.getPriimek() == textBoxPriimek.Text).ToList();


Če ti ne izpisuje nič v listboxu, potem postavi breakpoint na vrstico, kjer narediš zanko čez najdene planince in poglej, če se dodajo v listbox.

Zgodovina sprememb…

  • spremenilo: darkolord ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C# težava

Oddelek: Programiranje
233465 (2311) mladec
»

[ASP.NET] Prenos podatkov iz ene spletne strani v drugo

Oddelek: Programiranje
14866 (725) Cvenemir
»

c# class

Oddelek: Programiranje
342156 (1750) japol
»

C# Program

Oddelek: Programiranje
392985 (1908) Spura
»

[C#] Dostop do objekta iz različnih form

Oddelek: Programiranje
182095 (1808) Kekec

Več podobnih tem