Avatar billede _et Praktikant
11. april 2004 - 21:39 Der er 20 kommentarer og
1 løsning

Problem med eksempel fra bog - hjælp

Jeg prøver at lære C#, og bruger i øjeblikket Bo Brinch's C# bog. I denne bog, er der et eksempel med et kunde kartotek, som jeg har prøvet at lave, men det virker ikke - eller det virker, men der kommer en fejl når der skal tilføjes en kunde.

Her er kilden, et billede af fejl popup'en, samt et dump af hvor c# siger fejlen ligger.

Jeg syntes at kunne tyde ud fra fejlen, at der er problemer med at nogle objekter ikke er som de skal være, men jeg ved ikke lige, hvor jeg skal starte ned at få det løst.

Håber der er nogle af jer, der kan se hvad der er galt.

På forhånd tak.
Teddy

Ps. problmet kommer også hvis jeg trykker på  en anden knap, men det er samme problem. ( Mener jeg :-) )

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace Kundekartotek
{
    public class Administration : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.GroupBox grpKunde;
        private System.Windows.Forms.TextBox txtTlf;
        private System.Windows.Forms.TextBox txtAdr;
        private System.Windows.Forms.TextBox txtNavn;
        private System.Windows.Forms.Button btnAnnuller;
        private System.Windows.Forms.Button btnOK;
        private System.Windows.Forms.Label lblTlf;
        private System.Windows.Forms.Label lblAdr;
        private System.Windows.Forms.Label lblNavn;
        private System.Windows.Forms.GroupBox grpKundeoversigt;
        private System.Windows.Forms.Button btnSlet;
        private System.Windows.Forms.Button btnRediger;
        private System.Windows.Forms.Button btnNy;
        private System.Windows.Forms.ListView lstKundeoversigt;
        private System.Windows.Forms.ColumnHeader clnID;
        private System.Windows.Forms.ColumnHeader clnNavn;
        private System.Windows.Forms.ColumnHeader clnAdr;
        private System.Windows.Forms.ColumnHeader clnTlf;
        private System.ComponentModel.Container components = null;

        public Administration()
        {
            InitializeComponent();
        }

        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if(components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        private void InitializeComponent()
        {
            this.label1 = new System.Windows.Forms.Label();
            this.grpKunde = new System.Windows.Forms.GroupBox();
            this.txtTlf = new System.Windows.Forms.TextBox();
            this.txtAdr = new System.Windows.Forms.TextBox();
            this.txtNavn = new System.Windows.Forms.TextBox();
            this.btnAnnuller = new System.Windows.Forms.Button();
            this.btnOK = new System.Windows.Forms.Button();
            this.lblTlf = new System.Windows.Forms.Label();
            this.lblAdr = new System.Windows.Forms.Label();
            this.lblNavn = new System.Windows.Forms.Label();
            this.grpKundeoversigt = new System.Windows.Forms.GroupBox();
            this.btnSlet = new System.Windows.Forms.Button();
            this.btnRediger = new System.Windows.Forms.Button();
            this.btnNy = new System.Windows.Forms.Button();
            this.lstKundeoversigt = new System.Windows.Forms.ListView();
            this.clnID = new System.Windows.Forms.ColumnHeader();
            this.clnNavn = new System.Windows.Forms.ColumnHeader();
            this.clnAdr = new System.Windows.Forms.ColumnHeader();
            this.clnTlf = new System.Windows.Forms.ColumnHeader();
            this.grpKunde.SuspendLayout();
            this.grpKundeoversigt.SuspendLayout();
            this.SuspendLayout();
            //
            // label1
            //
            this.label1.BackColor = System.Drawing.SystemColors.ControlText;
            this.label1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
            this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.label1.ForeColor = System.Drawing.SystemColors.ControlLightLight;
            this.label1.Location = new System.Drawing.Point(8, 8);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(224, 48);
            this.label1.TabIndex = 2;
            this.label1.Text = "France Vacances KundeKatalog Administration";
            this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            //
            // grpKunde
            //
            this.grpKunde.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                                  this.txtTlf,
                                                                                  this.txtAdr,
                                                                                  this.txtNavn,
                                                                                  this.btnAnnuller,
                                                                                  this.btnOK,
                                                                                  this.lblTlf,
                                                                                  this.lblAdr,
                                                                                  this.lblNavn});
            this.grpKunde.Location = new System.Drawing.Point(8, 64);
            this.grpKunde.Name = "grpKunde";
            this.grpKunde.Size = new System.Drawing.Size(472, 168);
            this.grpKunde.TabIndex = 14;
            this.grpKunde.TabStop = false;
            this.grpKunde.Text = "Kunde";
            //
            // txtTlf
            //
            this.txtTlf.Location = new System.Drawing.Point(232, 72);
            this.txtTlf.Name = "txtTlf";
            this.txtTlf.Size = new System.Drawing.Size(176, 20);
            this.txtTlf.TabIndex = 21;
            this.txtTlf.Text = "textBox3";
            //
            // txtAdr
            //
            this.txtAdr.Location = new System.Drawing.Point(232, 48);
            this.txtAdr.Name = "txtAdr";
            this.txtAdr.Size = new System.Drawing.Size(176, 20);
            this.txtAdr.TabIndex = 20;
            this.txtAdr.Text = "textBox2";
            //
            // txtNavn
            //
            this.txtNavn.Location = new System.Drawing.Point(232, 24);
            this.txtNavn.Name = "txtNavn";
            this.txtNavn.Size = new System.Drawing.Size(176, 20);
            this.txtNavn.TabIndex = 19;
            this.txtNavn.Text = "textBox1";
            //
            // btnAnnuller
            //
            this.btnAnnuller.Location = new System.Drawing.Point(136, 128);
            this.btnAnnuller.Name = "btnAnnuller";
            this.btnAnnuller.Size = new System.Drawing.Size(80, 24);
            this.btnAnnuller.TabIndex = 18;
            this.btnAnnuller.Text = "Annuller";
            this.btnAnnuller.Click += new System.EventHandler(this.btnAnnuller_Click);
            //
            // btnOK
            //
            this.btnOK.Location = new System.Drawing.Point(40, 128);
            this.btnOK.Name = "btnOK";
            this.btnOK.Size = new System.Drawing.Size(80, 24);
            this.btnOK.TabIndex = 17;
            this.btnOK.Text = "OK";
            this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
            //
            // lblTlf
            //
            this.lblTlf.Location = new System.Drawing.Point(80, 72);
            this.lblTlf.Name = "lblTlf";
            this.lblTlf.Size = new System.Drawing.Size(144, 24);
            this.lblTlf.TabIndex = 16;
            this.lblTlf.Text = "tlf";
            this.lblTlf.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
            //
            // lblAdr
            //
            this.lblAdr.Location = new System.Drawing.Point(80, 48);
            this.lblAdr.Name = "lblAdr";
            this.lblAdr.Size = new System.Drawing.Size(144, 24);
            this.lblAdr.TabIndex = 15;
            this.lblAdr.Text = "adr";
            this.lblAdr.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
            //
            // lblNavn
            //
            this.lblNavn.Location = new System.Drawing.Point(80, 24);
            this.lblNavn.Name = "lblNavn";
            this.lblNavn.Size = new System.Drawing.Size(144, 24);
            this.lblNavn.TabIndex = 14;
            this.lblNavn.Text = "navn";
            this.lblNavn.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
            //
            // grpKundeoversigt
            //
            this.grpKundeoversigt.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                                          this.lstKundeoversigt,
                                                                                          this.btnSlet,
                                                                                          this.btnRediger,
                                                                                          this.btnNy});
            this.grpKundeoversigt.Location = new System.Drawing.Point(8, 248);
            this.grpKundeoversigt.Name = "grpKundeoversigt";
            this.grpKundeoversigt.Size = new System.Drawing.Size(472, 224);
            this.grpKundeoversigt.TabIndex = 15;
            this.grpKundeoversigt.TabStop = false;
            this.grpKundeoversigt.Text = "KundeOversigt";
            //
            // btnSlet
            //
            this.btnSlet.Location = new System.Drawing.Point(296, 184);
            this.btnSlet.Name = "btnSlet";
            this.btnSlet.Size = new System.Drawing.Size(80, 24);
            this.btnSlet.TabIndex = 13;
            this.btnSlet.Text = "Slet";
            this.btnSlet.Click += new System.EventHandler(this.btnSlet_Click);
            //
            // btnRediger
            //
            this.btnRediger.Location = new System.Drawing.Point(200, 184);
            this.btnRediger.Name = "btnRediger";
            this.btnRediger.Size = new System.Drawing.Size(80, 24);
            this.btnRediger.TabIndex = 12;
            this.btnRediger.Text = "Rediger";
            this.btnRediger.Click += new System.EventHandler(this.btnRediger_Click);
            //
            // btnNy
            //
            this.btnNy.Location = new System.Drawing.Point(104, 184);
            this.btnNy.Name = "btnNy";
            this.btnNy.Size = new System.Drawing.Size(80, 24);
            this.btnNy.TabIndex = 11;
            this.btnNy.Text = "Ny";
            this.btnNy.Click += new System.EventHandler(this.btnNy_Click);
            //
            // lstKundeoversigt
            //
            this.lstKundeoversigt.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
                                                                                              this.clnID,
                                                                                              this.clnNavn,
                                                                                              this.clnAdr,
                                                                                              this.clnTlf});
            this.lstKundeoversigt.Location = new System.Drawing.Point(32, 32);
            this.lstKundeoversigt.Name = "lstKundeoversigt";
            this.lstKundeoversigt.Size = new System.Drawing.Size(408, 128);
            this.lstKundeoversigt.TabIndex = 15;
            //
            // Administration
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(496, 486);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.grpKundeoversigt,
                                                                          this.grpKunde,
                                                                          this.label1});
            this.Name = "Administration";
            this.Text = "Administration";
            this.Load += new System.EventHandler(this.Administration_Load);
            this.grpKunde.ResumeLayout(false);
            this.grpKundeoversigt.ResumeLayout(false);
            this.ResumeLayout(false);

        }
        #endregion
        [STAThread]
        static void Main()
        {
            Application.Run(new Administration());
        }

            private enum eKundeoperation{Ny, Rediger};
            private eKundeoperation MinKundeoperation;
            public CKundekartotek kk;
        private void Administration_Load(object sender, System.EventArgs e)   
        {

        }

        private void btnNy_Click(object sender, System.EventArgs e)
        {
            // Tillad kun indtastning i kundepanel
            grpKunde.Enabled = true;
            grpKundeoversigt.Enabled = false;
           
            // Rens kundefelter
            txtNavn.Text = "";
            txtAdr.Text = "";
            txtTlf.Text = "";

            txtNavn.Focus();

            MinKundeoperation = eKundeoperation.Ny;   
        }

        private void btnRediger_Click(object sender, System.EventArgs e)
        {
            // Tillad kun indtastning i kundepanel
            grpKunde.Enabled = true;
            grpKundeoversigt.Enabled = false;

            // Rens kundefelter
            txtNavn.Text = "";
            txtAdr.Text = "";
            txtTlf.Text = "";

            txtNavn.Focus();

            MinKundeoperation = eKundeoperation.Rediger;
        }

        private void btnSlet_Click(object sender, System.EventArgs e)
        {
            string strID = lstKundeoversigt.FocusedItem.Text;
            kk.SletKunde(Convert.ToInt32(strID, 10));

            OpdaterOversigt();
        }

        private void btnOK_Click(object sender, System.EventArgs e)
        {
            if (MinKundeoperation == eKundeoperation.Ny)
                kk.NyKunde(txtNavn.Text, txtAdr.Text, txtTlf.Text);
            else // Rediger
            {
                string strID = lstKundeoversigt.FocusedItem.Text;
                kk.OpdaterKunde(Convert.ToInt32(strID, 10), txtNavn.Text, txtAdr.Text, txtTlf.Text);
            }
            OpdaterOversigt();
           
            // Tillad ej indtastning i kundepanel
            grpKunde.Enabled = false;
            grpKundeoversigt.Enabled = true;
        }

        private void btnAnnuller_Click(object sender, System.EventArgs e)
        {
            // Tillad ej indtastning i kundepanel
            grpKunde.Enabled = false;
            grpKundeoversigt.Enabled = true;
        }
       
        // Opdater listview'en med kundedata
        void OpdaterOversigt()
        {
            CKunde MinKunde;

            lstKundeoversigt.Items.Clear();

            MinKunde = kk.FoersteKunde();
            while(MinKunde != null) // Sålænge der er kunder
            {
                ListViewItem MinRaekke =
                    IndsaetKunde(MinKunde.ID.ToString(),
                    MinKunde.Navn,
                    MinKunde.Adr,
                    MinKunde.Tlf);

                // Indsæt i listview
                lstKundeoversigt.Items.Add(MinRaekke);

                MinKunde = kk.NaesteKunde();
            }
            if (lstKundeoversigt.Items.Count == 0)
            {
                btnRediger.Enabled = false;
                btnSlet.Enabled = false;
            }
            else
            {
                btnRediger.Enabled = true;
                btnSlet.Enabled = true;
            }
        }

        // Retunerer en listviewItem med hver enkelt kunde til OpdaterOversigt
        ListViewItem IndsaetKunde(string ID, string Navn, string Adr, string Tlf)
        {
            ListViewItem MinRaekke = new ListViewItem();
            MinRaekke.Text = ID;
            MinRaekke.SubItems.Add(Navn);
            MinRaekke.SubItems.Add(Adr);
            MinRaekke.SubItems.Add(Tlf);
            return MinRaekke;
        }
    }

    // ----------------------------------------------------------- CPerson
    public class CPerson
    {
        public CPerson(string Navn, string Adr, string Tlf)
        {
            navn = Navn;
            adr = Adr;
            tlf = Tlf;
        }


        virtual public void Opdater(string Navn, string Adr, string Tlf)
        {
            navn = Navn;
            adr = Adr;
            tlf = Tlf;
        }


        // Property : navn
        protected string navn;
        public string Navn
        {
            get
            {
                return navn;
            }
        }


        // Property : adr = adresse
        protected string adr;
        public string Adr
        {
            get
            {
                return adr;
            }
        }


        // Property : tlf = telefon
        protected string tlf;
        public string Tlf
        {
            get
            {
                return tlf;
            }
        }
    }


    // ----------------------------------------------------------- CKunde
    public class CKunde : CPerson
    {
        private static int KundeID = 0;
        // Constructor
        public CKunde(string Navn, string Adr, string Tlf) : base(Navn, Adr, Tlf)
        {
            iD = KundeID++;
        }

        // Opdater : Overrideet metode, som opdaterer kundedata
        override public void Opdater(string Navn, string Adr, string Tlf)
        {
            // Kald metode i CPerson
            base.Opdater(Navn, Adr, Tlf);
        }

        // Property : ID
        private int iD;
        public int ID
        {
            get { return iD;}
        }
    }


    // ----------------------------------------------------------- CKundekartotek
    public class CKundekartotek
    {
        // Constructor
        public CKundekartotek()
        {
            arrKunder = new ArrayList();
            KundePegepind = 0;
        }

        // Nykunde : Opret ny kunde
        public void NyKunde(string Navn, string Adr, string Tlf)
        {
            try
            {
                CKunde MinKunde = new CKunde(Navn, Adr, Tlf);
                arrKunder.Add(MinKunde);
            }
            catch(Exception)
            {
                throw;
            }
        }

        // OpdaterKunde : Opdater kundens stamdata
        public void OpdaterKunde(int ID, string Navn, string Adr, string Tlf)
        {
            try
            {
                CKunde MinKunde = FindKunde(ID);
                MinKunde.Opdater(Navn, Adr, Tlf);
            }
            catch(Exception)
            {
                throw;
            }
        }

        // SletKunde : Sletter en kunde
        public void SletKunde(int ID)
        {
            try
            {
                CKunde MinKunde;
                MinKunde = FindKunde(ID);

                arrKunder.Remove(MinKunde);
            }
            catch(Exception)
            {
                throw;
            }
        }

        // FindKunde . Finder en kunde ud fra kundeid
        private CKunde FindKunde(int ID)
        {
            bool bStopIteration = false;
            CKunde MinKunde = null;

            IEnumerator MinEnumerator = arrKunder.GetEnumerator();
            while(MinEnumerator.MoveNext() && bStopIteration == false)
            {
                MinKunde =(CKunde)MinEnumerator.Current;
                if (MinKunde.ID == ID)
                    bStopIteration = true;
            }

            if (bStopIteration == true)
                return MinKunde;
            else
                throw new CKartoteksException("Kunde ej fundet!");
        }
       
        private int KundePegepind;

        // FoersteKunde : Set pegepind til første kunde, og retunerer denne
        public CKunde FoersteKunde()
        {
            KundePegepind = 0;
            if(arrKunder.Count == 0)
                return null;
            else
                return((CKunde) arrKunder[KundePegepind]);
        }

        // NaesteKunde : Sæt pegepind til næste kunde, og retuner denne
        public CKunde NaesteKunde()
        {
            ++KundePegepind;
            if (KundePegepind >= arrKunder.Count)
            {
                --KundePegepind;
                return null;
            }
            return ((CKunde) arrKunder[KundePegepind]);
        }

        // Array af kunder
        private ArrayList arrKunder;
    }


    // ----------------------------------------------------------- Exceptions
    public class CKartoteksException : ApplicationException
    {
        public CKartoteksException() : base(){}
        public CKartoteksException(string message) : base(message){}
        public CKartoteksException(string message, Exception inner) : base(message, inner) {}
    }
}
Avatar billede arne_v Ekspert
11. april 2004 - 21:46 #1
Der er noget galt med den kode.

public CKundekartotek kk;

bliver tilsyneladende aldrig initialiseret - og så skal kk.noget jo
give en null pointer exception.
Avatar billede _et Praktikant
11. april 2004 - 22:54 #2
Har du et bud på hvordan, jeg løser problemet?

Her er dump'et - glemte det før
Avatar billede arne_v Ekspert
11. april 2004 - 22:56 #3
public CKundekartotek kk = new CKundekartotek();

var da værd at prøve
Avatar billede _et Praktikant
11. april 2004 - 22:57 #4
Bogen laver eksemplet i 2 dele, men den beskriver ikke hvordan jeg sætter det sammen, så jeg har lejet ligt, og nu kan programmet køre, men der kommer netop en "Null Referance" fejl som du nævner.
Avatar billede _et Praktikant
11. april 2004 - 23:02 #5
Det hjalp da, umidlbart, men er ikke sikker på det var helt nok
Avatar billede arne_v Ekspert
11. april 2004 - 23:08 #6
Virker det eller virker det ikke ? Og hvis det ikke virker hvilken fejl får du ?
Avatar billede _et Praktikant
11. april 2004 - 23:47 #7
Der kommer ikke den Null fejl mere, men jeg har et problem med at navn, adresse, og tlf, som indtastes ikke bliver vist i lstviewbox'en - den viser kun enum nummeret
Avatar billede _et Praktikant
11. april 2004 - 23:50 #8
Kunne du overtales til at få det til at virke, så jeg kunne sidde med den der virker, og den der ikke virker, og se hvad jeg har lavet forkert??

Du kan få source projektet i en zip


Jeg har kigget i bogen, og jeg kan ikke finde nogle slåfejl
Avatar billede arne_v Ekspert
11. april 2004 - 23:52 #9
Det kunne jeg vel nok.
Avatar billede _et Praktikant
11. april 2004 - 23:53 #10
Du er en helt - 2 sek.
Avatar billede arne_v Ekspert
11. april 2004 - 23:55 #11
Forvent ikke at høre fra mig før imorgen - det er sent ...
Avatar billede _et Praktikant
11. april 2004 - 23:59 #12
Det er helt i orden, det haster ikke.

Problemet med listboxen er at den skal vise de info man har indtastet

Her er et link til projektet
http://roskvist.net/exp/Kundekartotek.rar
Avatar billede arne_v Ekspert
12. april 2004 - 11:07 #13
Der er ganske rigtigt noget galt med det ListView og de ListViewItem's.

Men jeg må melde pas til hvad det er. Jeg er ikke skrap til win forms.
Avatar billede _et Praktikant
12. april 2004 - 11:17 #14
Tror du det kan tænkes at jeg har valgt en forkert list?
Avatar billede _et Praktikant
12. april 2004 - 12:13 #15
Jeg har fundet ud af det. Jeg rettede lidt på listview, og så kunne den ( "view" propertyen skulle rettes fra "icon" til "Details" ) - Hvis du vil have et par point for indsatsen, så kast et svar

Tak for forsøget
Avatar billede arne_v Ekspert
12. april 2004 - 16:57 #16
svar
Avatar billede gulbaek Nybegynder
12. april 2004 - 17:20 #17
_et gider du ikke poste kildekoden, har nemlig også selv bøvlet med det eksempel for længe siden, og kunne da godt tænke mig at se hvordan det rigtig skal se ud.
Avatar billede _et Praktikant
12. april 2004 - 18:23 #18
Jo - det gør jeg da.

PS. Jeg har lavet nogle små endringer siden, men det er kun nogle knapper jeg enabler/disabler hvis de ikke må bruges.
Avatar billede _et Praktikant
12. april 2004 - 18:24 #19
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace Kundekartotek
{
    public class Administration : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.GroupBox grpKunde;
        private System.Windows.Forms.TextBox txtTlf;
        private System.Windows.Forms.TextBox txtAdr;
        private System.Windows.Forms.TextBox txtNavn;
        private System.Windows.Forms.Button btnAnnuller;
        private System.Windows.Forms.Button btnOK;
        private System.Windows.Forms.Label lblTlf;
        private System.Windows.Forms.Label lblAdr;
        private System.Windows.Forms.Label lblNavn;
        private System.Windows.Forms.GroupBox grpKundeoversigt;
        private System.Windows.Forms.Button btnSlet;
        private System.Windows.Forms.Button btnRediger;
        private System.Windows.Forms.Button btnNy;
        private System.Windows.Forms.ListView lstKundeoversigt;
        private System.Windows.Forms.ColumnHeader clnID;
        private System.Windows.Forms.ColumnHeader clnNavn;
        private System.Windows.Forms.ColumnHeader clnAdr;
        private System.Windows.Forms.ColumnHeader clnTlf;
        private System.ComponentModel.Container components = null;

        public Administration()
        {
            InitializeComponent();
        }

        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if(components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        private void InitializeComponent()
        {
            this.label1 = new System.Windows.Forms.Label();
            this.grpKunde = new System.Windows.Forms.GroupBox();
            this.txtTlf = new System.Windows.Forms.TextBox();
            this.txtAdr = new System.Windows.Forms.TextBox();
            this.txtNavn = new System.Windows.Forms.TextBox();
            this.btnAnnuller = new System.Windows.Forms.Button();
            this.btnOK = new System.Windows.Forms.Button();
            this.lblTlf = new System.Windows.Forms.Label();
            this.lblAdr = new System.Windows.Forms.Label();
            this.lblNavn = new System.Windows.Forms.Label();
            this.grpKundeoversigt = new System.Windows.Forms.GroupBox();
            this.lstKundeoversigt = new System.Windows.Forms.ListView();
            this.clnID = new System.Windows.Forms.ColumnHeader();
            this.clnNavn = new System.Windows.Forms.ColumnHeader();
            this.clnAdr = new System.Windows.Forms.ColumnHeader();
            this.clnTlf = new System.Windows.Forms.ColumnHeader();
            this.btnSlet = new System.Windows.Forms.Button();
            this.btnRediger = new System.Windows.Forms.Button();
            this.btnNy = new System.Windows.Forms.Button();
            this.grpKunde.SuspendLayout();
            this.grpKundeoversigt.SuspendLayout();
            this.SuspendLayout();
            //
            // label1
            //
            this.label1.BackColor = System.Drawing.SystemColors.ControlText;
            this.label1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
            this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.label1.ForeColor = System.Drawing.SystemColors.ControlLightLight;
            this.label1.Location = new System.Drawing.Point(8, 8);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(224, 48);
            this.label1.TabIndex = 2;
            this.label1.Text = "France Vacances KundeKatalog Administration";
            this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            //
            // grpKunde
            //
            this.grpKunde.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                                  this.txtTlf,
                                                                                  this.txtAdr,
                                                                                  this.txtNavn,
                                                                                  this.btnAnnuller,
                                                                                  this.btnOK,
                                                                                  this.lblTlf,
                                                                                  this.lblAdr,
                                                                                  this.lblNavn});
            this.grpKunde.Location = new System.Drawing.Point(8, 64);
            this.grpKunde.Name = "grpKunde";
            this.grpKunde.Size = new System.Drawing.Size(472, 168);
            this.grpKunde.TabIndex = 14;
            this.grpKunde.TabStop = false;
            this.grpKunde.Text = "Kunde";
            //
            // txtTlf
            //
            this.txtTlf.Location = new System.Drawing.Point(232, 72);
            this.txtTlf.Name = "txtTlf";
            this.txtTlf.Size = new System.Drawing.Size(176, 20);
            this.txtTlf.TabIndex = 21;
            this.txtTlf.Text = "textBox3";
            //
            // txtAdr
            //
            this.txtAdr.Location = new System.Drawing.Point(232, 48);
            this.txtAdr.Name = "txtAdr";
            this.txtAdr.Size = new System.Drawing.Size(176, 20);
            this.txtAdr.TabIndex = 20;
            this.txtAdr.Text = "textBox2";
            //
            // txtNavn
            //
            this.txtNavn.Location = new System.Drawing.Point(232, 24);
            this.txtNavn.Name = "txtNavn";
            this.txtNavn.Size = new System.Drawing.Size(176, 20);
            this.txtNavn.TabIndex = 19;
            this.txtNavn.Text = "textBox1";
            //
            // btnAnnuller
            //
            this.btnAnnuller.Location = new System.Drawing.Point(136, 128);
            this.btnAnnuller.Name = "btnAnnuller";
            this.btnAnnuller.Size = new System.Drawing.Size(80, 24);
            this.btnAnnuller.TabIndex = 18;
            this.btnAnnuller.Text = "Annuller";
            this.btnAnnuller.Click += new System.EventHandler(this.btnAnnuller_Click);
            //
            // btnOK
            //
            this.btnOK.Location = new System.Drawing.Point(40, 128);
            this.btnOK.Name = "btnOK";
            this.btnOK.Size = new System.Drawing.Size(80, 24);
            this.btnOK.TabIndex = 17;
            this.btnOK.Text = "OK";
            this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
            //
            // lblTlf
            //
            this.lblTlf.Location = new System.Drawing.Point(80, 72);
            this.lblTlf.Name = "lblTlf";
            this.lblTlf.Size = new System.Drawing.Size(144, 24);
            this.lblTlf.TabIndex = 16;
            this.lblTlf.Text = "tlf";
            this.lblTlf.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
            //
            // lblAdr
            //
            this.lblAdr.Location = new System.Drawing.Point(80, 48);
            this.lblAdr.Name = "lblAdr";
            this.lblAdr.Size = new System.Drawing.Size(144, 24);
            this.lblAdr.TabIndex = 15;
            this.lblAdr.Text = "adr";
            this.lblAdr.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
            //
            // lblNavn
            //
            this.lblNavn.Location = new System.Drawing.Point(80, 24);
            this.lblNavn.Name = "lblNavn";
            this.lblNavn.Size = new System.Drawing.Size(144, 24);
            this.lblNavn.TabIndex = 14;
            this.lblNavn.Text = "navn";
            this.lblNavn.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
            //
            // grpKundeoversigt
            //
            this.grpKundeoversigt.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                                          this.lstKundeoversigt,
                                                                                          this.btnSlet,
                                                                                          this.btnRediger,
                                                                                          this.btnNy});
            this.grpKundeoversigt.Location = new System.Drawing.Point(8, 248);
            this.grpKundeoversigt.Name = "grpKundeoversigt";
            this.grpKundeoversigt.Size = new System.Drawing.Size(472, 224);
            this.grpKundeoversigt.TabIndex = 15;
            this.grpKundeoversigt.TabStop = false;
            this.grpKundeoversigt.Text = "KundeOversigt";
            //
            // lstKundeoversigt
            //
            this.lstKundeoversigt.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
                                                                                              this.clnID,
                                                                                              this.clnNavn,
                                                                                              this.clnAdr,
                                                                                              this.clnTlf});
            this.lstKundeoversigt.Location = new System.Drawing.Point(32, 32);
            this.lstKundeoversigt.Name = "lstKundeoversigt";
            this.lstKundeoversigt.Size = new System.Drawing.Size(408, 128);
            this.lstKundeoversigt.TabIndex = 15;
            this.lstKundeoversigt.View = System.Windows.Forms.View.Details;
            //
            // clnID
            //
            this.clnID.Text = "ID";
            this.clnID.Width = 30;
            //
            // clnNavn
            //
            this.clnNavn.Text = "Kunde Navn";
            this.clnNavn.Width = 150;
            //
            // clnAdr
            //
            this.clnAdr.Text = "Kunde Adresse";
            this.clnAdr.Width = 150;
            //
            // clnTlf
            //
            this.clnTlf.Text = "Telefon nummer";
            //
            // btnSlet
            //
            this.btnSlet.Location = new System.Drawing.Point(296, 184);
            this.btnSlet.Name = "btnSlet";
            this.btnSlet.Size = new System.Drawing.Size(80, 24);
            this.btnSlet.TabIndex = 13;
            this.btnSlet.Text = "Slet";
            this.btnSlet.Click += new System.EventHandler(this.btnSlet_Click);
            //
            // btnRediger
            //
            this.btnRediger.Location = new System.Drawing.Point(200, 184);
            this.btnRediger.Name = "btnRediger";
            this.btnRediger.Size = new System.Drawing.Size(80, 24);
            this.btnRediger.TabIndex = 12;
            this.btnRediger.Text = "Rediger";
            this.btnRediger.Click += new System.EventHandler(this.btnRediger_Click);
            //
            // btnNy
            //
            this.btnNy.Location = new System.Drawing.Point(104, 184);
            this.btnNy.Name = "btnNy";
            this.btnNy.Size = new System.Drawing.Size(80, 24);
            this.btnNy.TabIndex = 11;
            this.btnNy.Text = "Ny";
            this.btnNy.Click += new System.EventHandler(this.btnNy_Click);
            //
            // Administration
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(496, 486);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.grpKundeoversigt,
                                                                          this.grpKunde,
                                                                          this.label1});
            this.Name = "Administration";
            this.Text = "Administration";
            this.Load += new System.EventHandler(this.Administration_Load);
            this.grpKunde.ResumeLayout(false);
            this.grpKundeoversigt.ResumeLayout(false);
            this.ResumeLayout(false);

        }
        #endregion
        [STAThread]
        static void Main()
        {
            Application.Run(new Administration());
        }

            private enum eKundeoperation{Ny, Rediger};
            private eKundeoperation MinKundeoperation;
            //public CKundekartotek kk;
            public CKundekartotek kk = new CKundekartotek();


        private void Administration_Load(object sender, System.EventArgs e)   
        {
            grpKunde.Enabled = false;
            grpKundeoversigt.Enabled = true;
            btnRediger.Enabled = false;
            btnSlet.Enabled = false;
        }

        private void btnNy_Click(object sender, System.EventArgs e)
        {
            // Tillad kun indtastning i kundepanel
            grpKunde.Enabled = true;
            grpKundeoversigt.Enabled = false;
           
            // Rens kundefelter
            txtNavn.Text = "";
            txtAdr.Text = "";
            txtTlf.Text = "";

            txtNavn.Focus();

            MinKundeoperation = eKundeoperation.Ny;   
        }

        private void btnRediger_Click(object sender, System.EventArgs e)
        {
            // Tillad kun indtastning i kundepanel
            grpKunde.Enabled = true;
            grpKundeoversigt.Enabled = false;

            // Rens kundefelter
            txtNavn.Text = "";
            txtAdr.Text = "";
            txtTlf.Text = "";

            txtNavn.Focus();

            MinKundeoperation = eKundeoperation.Rediger;
        }

        private void btnSlet_Click(object sender, System.EventArgs e)
        {
            try
            {
                string strID = lstKundeoversigt.FocusedItem.Text;
                kk.SletKunde(Convert.ToInt32(strID, 10));

                OpdaterOversigt();
            }
            catch(Exception)
            {
                MessageBox.Show("Du har ikke valgt en kunde at slette.", "Fejl", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnOK_Click(object sender, System.EventArgs e)
        {
            if (MinKundeoperation == eKundeoperation.Ny)
                kk.NyKunde(txtNavn.Text, txtAdr.Text, txtTlf.Text);
            else // Rediger
            {
                string strID = lstKundeoversigt.FocusedItem.Text;
                kk.OpdaterKunde(Convert.ToInt32(strID, 10), txtNavn.Text, txtAdr.Text, txtTlf.Text);
            }
            OpdaterOversigt();
           
            // Tillad ej indtastning i kundepanel
            grpKunde.Enabled = false;
            grpKundeoversigt.Enabled = true;
        }

        private void btnAnnuller_Click(object sender, System.EventArgs e)
        {
            // Tillad ej indtastning i kundepanel
            grpKunde.Enabled = false;
            grpKundeoversigt.Enabled = true;
        }
       
        // Opdater listview'en med kundedata
        void OpdaterOversigt()
        {
            CKunde MinKunde;

            lstKundeoversigt.Items.Clear();

            MinKunde = kk.FoersteKunde();

            if (lstKundeoversigt.Items.Count >= 0)
            {
                btnRediger.Enabled = true;
                btnSlet.Enabled = true;
            }
            else
            {
                btnRediger.Enabled = true;
                btnSlet.Enabled = true;
            }
            while(MinKunde != null) // Sålænge der er kunder
            {
                ListViewItem MinRaekke =
                    IndsaetKunde(MinKunde.ID.ToString(),
                    MinKunde.Navn,
                    MinKunde.Adr,
                    MinKunde.Tlf);

                // Indsæt i listview
                lstKundeoversigt.Items.Add(MinRaekke);

                MinKunde = kk.NaesteKunde();
            }
            if (lstKundeoversigt.Items.Count == 0)
            {
                btnRediger.Enabled = false;
                btnSlet.Enabled = false;
            }
            else
            {
                btnRediger.Enabled = true;
                btnSlet.Enabled = true;
            }
        }

        // Retunerer en listviewItem med hver enkelt kunde til OpdaterOversigt
        ListViewItem IndsaetKunde(string ID, string Navn, string Adr, string Tlf)
        {
            ListViewItem MinRaekke = new ListViewItem();
            //MinRaekke.SubItems.Add(ID);
            MinRaekke.Text = ID;
            MinRaekke.SubItems.Add(Navn);
            MinRaekke.SubItems.Add(Adr);
            MinRaekke.SubItems.Add(Tlf);
            return MinRaekke;
        }
    }

    // ----------------------------------------------------------- CPerson
    public class CPerson
    {
        public CPerson(string Navn, string Adr, string Tlf)
        {
            navn = Navn;
            adr = Adr;
            tlf = Tlf;
        }


        virtual public void Opdater(string Navn, string Adr, string Tlf)
        {
            navn = Navn;
            adr = Adr;
            tlf = Tlf;
        }


        // Property : navn
        protected string navn;
        public string Navn
        {
            get
            {
                return navn;
            }
        }


        // Property : adr = adresse
        protected string adr;
        public string Adr
        {
            get
            {
                return adr;
            }
        }


        // Property : tlf = telefon
        protected string tlf;
        public string Tlf
        {
            get
            {
                return tlf;
            }
        }
    }


    // ----------------------------------------------------------- CKunde
    public class CKunde : CPerson
    {
        private static int KundeID = 0;
        // Constructor
        public CKunde(string Navn, string Adr, string Tlf) : base(Navn, Adr, Tlf)
        {
            iD = KundeID++;
        }

        // Opdater : Overrideet metode, som opdaterer kundedata
        override public void Opdater(string Navn, string Adr, string Tlf)
        {
            // Kald metode i CPerson
            base.Opdater(Navn, Adr, Tlf);
        }

        // Property : ID
        private int iD;
        public int ID
        {
            get { return iD;}
        }
    }


    // ----------------------------------------------------------- CKundekartotek
    public class CKundekartotek
    {
        // Constructor
        public CKundekartotek()
        {
            arrKunder = new ArrayList();
            KundePegepind = 0;
        }

        // Nykunde : Opret ny kunde
        public void NyKunde(string Navn, string Adr, string Tlf)
        {
            try
            {
                CKunde MinKunde = new CKunde(Navn, Adr, Tlf);
                arrKunder.Add(MinKunde);
            }
            catch(Exception)
            {
                throw;
            }
        }

        // OpdaterKunde : Opdater kundens stamdata
        public void OpdaterKunde(int ID, string Navn, string Adr, string Tlf)
        {
            try
            {
                CKunde MinKunde = FindKunde(ID);
                MinKunde.Opdater(Navn, Adr, Tlf);
            }
            catch(Exception)
            {
                throw;
            }
        }

        // SletKunde : Sletter en kunde
        public void SletKunde(int ID)
        {
            try
            {
                CKunde MinKunde;
                MinKunde = FindKunde(ID);

                arrKunder.Remove(MinKunde);
            }
            catch(Exception)
            {
                throw;
            }
        }

        // FindKunde . Finder en kunde ud fra kundeid
        private CKunde FindKunde(int ID)
        {
            bool bStopIteration = false;
            CKunde MinKunde = null;

            IEnumerator MinEnumerator = arrKunder.GetEnumerator();
            while(MinEnumerator.MoveNext() && bStopIteration == false)
            {
                MinKunde =(CKunde)MinEnumerator.Current;
                if (MinKunde.ID == ID)
                    bStopIteration = true;
            }

            if (bStopIteration == true)
                return MinKunde;
            else
                throw new CKartoteksException("Kunde ej fundet!");
        }
       
        private int KundePegepind;

        // FoersteKunde : Set pegepind til første kunde, og retunerer denne
        public CKunde FoersteKunde()
        {
            KundePegepind = 0;
            if(arrKunder.Count == 0)
                return null;
            else
                return((CKunde) arrKunder[KundePegepind]);
        }

        // NaesteKunde : Sæt pegepind til næste kunde, og retuner denne
        public CKunde NaesteKunde()
        {
            ++KundePegepind;
            if (KundePegepind >= arrKunder.Count)
            {
                --KundePegepind;
                return null;
            }
            return ((CKunde) arrKunder[KundePegepind]);
        }

        // Array af kunder
        private ArrayList arrKunder;
    }


    // ----------------------------------------------------------- Exceptions
    public class CKartoteksException : ApplicationException
    {
        public CKartoteksException() : base(){}
        public CKartoteksException(string message) : base(message){}
        public CKartoteksException(string message, Exception inner) : base(message, inner) {}
    }
}
Avatar billede gulbaek Nybegynder
12. april 2004 - 18:34 #20
Takker
Avatar billede _et Praktikant
12. april 2004 - 19:22 #21
Welcome :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester