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) {} } }
Annonceindlæg fra Barco
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.
11. april 2004 - 22:54
#2
Har du et bud på hvordan, jeg løser problemet? Her er dump'et - glemte det før
11. april 2004 - 22:56
#3
public CKundekartotek kk = new CKundekartotek(); var da værd at prøve
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.
11. april 2004 - 23:02
#5
Det hjalp da, umidlbart, men er ikke sikker på det var helt nok
11. april 2004 - 23:08
#6
Virker det eller virker det ikke ? Og hvis det ikke virker hvilken fejl får du ?
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
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
11. april 2004 - 23:52
#9
Det kunne jeg vel nok.
11. april 2004 - 23:53
#10
Du er en helt - 2 sek.
11. april 2004 - 23:55
#11
Forvent ikke at høre fra mig før imorgen - det er sent ...
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.
12. april 2004 - 11:17
#14
Tror du det kan tænkes at jeg har valgt en forkert list?
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
12. april 2004 - 16:57
#16
svar
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.
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.
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) {} } }
12. april 2004 - 18:34
#20
Takker
12. april 2004 - 19:22
#21
Welcome :-)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.