Autor Beitrag
mtz93
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mo 28.08.17 16:13 
Guten Tag,

sitze zur Zeit an einem kleinen Projekt und hänge jetzt bei der Erstellung eines ListViewItems fest, obwohl es vorhin noch funktioniert hat. Zur Information: Bei den folgenden zwei Codeschnipseln handelt es sich um zwei verschiedene Projektmappen. Hier der Code:

ausblenden volle Höhe Neues Projekt => Funktioniert nicht
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Maske : Form
    {
        ListViewItem lvItemListeGUI;
        
        .
        .
        .
        .
        .

        public void Anlegen()
        {
            setzeAttribute();

            lvItemListeGUI = new ListViewItem(eAuftragsNr.ToString()); 
            lvItemListeGUI.SubItems.Add(System.DateTime.Now.ToString());
            lvItemListeGUI.SubItems.Add(eFormStrasse + " " + eFormHausNr + ", " + eFormPlz + " " + eFormOrt);
            lvItemListeGUI.SubItems.Add(eFormDiagnose);
        }

        public ListViewItem returnListe()
        {
            return lvItemListeGUI;
        }


Die Variablen wie eAuftragsNr, eFormStrasse, eFormHausnr etc pp. werden beim Initialisieren des Objekts beschrieben. Beim Debuggen steht in diesen Variablen auch wirklich ein Wert drin. Beim Debuggen kommt dann folgende Fehlermeldung:

"Ein Ausnahmefehler des Typs "System.NullReferenceException" ist in WindowsFormsApplication1.exe aufgetreten.

Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."

In lvItemListeGUI steht dann NULL und die Zeile drunter "lvItemListeGUI.SubItems..." wirft dann den Fehler. Meine Frage ist im Grunde warum in lvItemListeGUI NULL steht, obwohl eAuftragsNr einen Wert ( in diesem Falle 1) hat. Auch wenn ich anstatt der Zeile einfach lvItemListeGUI = new ListViewItem("test"); reinschreibe kommt der selbe Fehler.

Das ganze hier oben ist die Kopie eines Projekts, dass ich bereits vorher geschrieben habe. Aber beim anderen Projekt gings. Da sieht der Code so aus:

ausblenden volle Höhe Altes Projekt => Hat funktioniert
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        ListViewItem lvItemListeGUI;
         
        .
        .
        .
        .

        private void buttonAnlegen_Click(object sender, EventArgs e)
        {
            setzeAttribute();

            lvItemListeGUI = new ListViewItem(eFormId.ToString());
            lvItemListeGUI.SubItems.Add(System.DateTime.Now.ToString());
            lvItemListeGUI.SubItems.Add(eFormStrasse + " " + eFormHausNr + ", " + eFormPlz + " " + eFormOrt);
            lvItemListeGUI.SubItems.Add(eFormDiagnose);
            listViewEinsatzlisteGUI.Items.Add(lvItemListeGUI);
         }


Der Unterschied der beiden Projekte ist, dass beim neuen, nicht funktionierenden Projekt eine neue Klasse "Maske" erstellt wurde, die die Aufgaben übernimmt. Dies war beim alten Projekt noch in der Form-Klasse der Fall. Die Form(GUI mit ListView) erstellt ein neues Objekt der Klasse Maske, welches dann die Attribute wie eFormId, eFormStrasse übernimmt. Wenn nun in der Form ein button Namens buttonAnlegen geklickt wird, wird im Objekt Maske die Funktion anlegen() aufgerufen (Oberer Code). Diese schreibt dann die Werte in ein ListViewItem. Anschließend ruft die Form die Funktion returnListe() auf und schreibt den Rückgabewert in den ListView, der der Form(GUI) angehört.

Unterschiede zwischen dem oberen und unteren Code beim Debuggen mit Haltepunkt bei lvItemListeGUI.SubItems.Add:
Oben: lvItemListeGUI = NULL;
Unten lvItemListeGUI = eFormId;

Wieso ist im oberen Code lvItemListeGUI = NULL obwohl beide Codes annähernd gleich im Bezug auf das ListViewItem sind?
Ich hoffe ich konnte mein Problem verständlich erklären. Vielen Dank für eure Antworten.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 28.08.17 18:04 
- Nachträglich durch die Entwickler-Ecke gelöscht -