Entwickler-Ecke

WinForms - Objektverweis wurde nicht auf eine Objektinstanz festgelegt


Csharp-programmierer - So 20.09.15 09:14
Titel: Objektverweis wurde nicht auf eine Objektinstanz festgelegt
Hallo ihr Experten. Ich stehe auf dem Schlauch. Ich habe 2 Strings, die beide einen Wert zurückgeben. Bei dem ersten String haut alles hin. Bei dem 2. kommt eine Fehlermeldung: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Hier der 1. String:

C#-Quelltext
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:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
private string Überschrift_Generieren()
        {
            Strings_Leeren();
            tabs = this.numericUpDown2.Value;
            for (int i = 0; i < tabs; i++)
            {
                tabs1 += "\t";
            }

            this.color = "color=\"" + ColorTranslator.ToHtml(this.button1.BackColor) + "\"";
            switch (this.comboBox1.SelectedIndex)
            {
                case 0:
                    überschrift = "<h1>";
                    überschrift1 = "</h1>";
                    break;
                case 1:
                    überschrift = "<h2>";
                    überschrift1 = "</h2>";
                    break;
                case 2:
                    überschrift = "<h3>";
                    überschrift1 = "</h3>";
                    break;
                case 3:
                    überschrift = "<h4>";
                    überschrift1 = "</h4>";
                    break;
                case 4:
                    überschrift = "<h5>";
                    überschrift1 = "</h5>";
                    break;
                case 5:
                    überschrift = "<h6>";
                    überschrift1 = "</h6>";
                    break;
                default:
                    überschrift = "<h1>";
                    überschrift1 = "</h1>";
                    break;
            }

            foreach (string s in checkedListBox1.CheckedItems)
            {
                switch (s)
                {
                    case "<marquee>":
                        marquee = "<marquee>";
                        marquee1 = "</marquee>";
                        break;
                    case "<center>":
                        center = "<center>";
                        center1 = "</center>";
                        break;
                    case "<u>":
                        typ += "<u>";
                        typ1 += "</u>";
                        break;
                    case "<i>":
                        typ += "<i>";
                        typ1 += "</i>";
                        break;
                    case "<b>":
                        typ += "<b>";
                        typ1 += "</b>";
                        break;
                }
            }
                this.text = this.richTextBox1.Text;
                test = überschrift + center + "<font" + " " + font + " " + color + " " + size1 + ">" + marquee + typ + text + typ1 + marquee1 + überschrift1 + center1 + color1 + font1;
                return test;


Aufgerufen wird er dann so:

C#-Quelltext
1:
MessageBox.Show(Überschrift_Generieren());                    


Hier der 2. String (mit der Fehlermeldung):

C#-Quelltext
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:
37:
38:
private string schriftzug_generator()
        {
            xytabs = this.numericUpDown3.Value;
            xysize = this.numericUpDown1.Value;
            for(int i = 0; i < xytabs; i++)
            {
                xtabs += "\t";
            }

            xcolor = "color=\"" + ColorTranslator.ToHtml(this.button8.BackColor) + "\"";
            xtext = this.richTextBox2.Text;

            foreach(string s in checkedListBox2.CheckedItems)
            {
                switch (s)
                {
                    case "<marquee>":
                        xmarquee = "<marquee>"; xmarquee1 = "</marquee>";
                        break;
                    case "<center>":
                        xcenter = "<center>"; xcenter1 = "</center>";
                        break;
                    case "<b>":
                        xtyp += "<b>"; xtyp1 += "</b>";
                        break;
                    case "<i>":
                        xtyp += "<i>"; xtyp1 += "</i>";
                        break;
                    case "<u>":
                        xtyp += "<u>"; xtyp1 += "</u>";
                        break;

                }
           }

            this.xtest = xcenter + "<font" + xcolor + xfont + xsize.ToString() + ">" + xtyp + xmarquee + text + xmarquee1 + xtyp1 + "</font>" + xcenter1;
            return xtest;
        }


Augerufen wird er wie der 1. String.
Die Form, auf der sich die Strings befinden wird so aufgerufen:

C#-Quelltext
1:
2:
3:
Form6 a = new Form6();
a.überschrift_Transfer1 += new Form6.Überschrift_Transfer(s);
a.ShowDialog();


Hier wird ein Event angehängt. Auf der Form mit den String befindet sich eine TabControl, mit 2 TabPages (Überschrift, Schriftzug). Bei der ersten TabPage haut alle hin. Bei der 2. kommt der Fehler. Woran liegt es?

Mfg :=)

Moderiert von user profile iconTh69: Titel geändert (statt einfach nur "Programmfehler").


Th69 - So 20.09.15 09:34

Hallo,

dies ist eine sog. NullReferenceException, die du als Programmierer selber lösen können solltest. Benutze dafür den Debugger und lass dir die Variablenwerte anzeigen (wenn die Fehlermeldung im Visual Studio erscheint): [Artikel] Debugger: Wie verwende ich den von Visual Studio? [http://www.mycsharp.de/wbb2/thread.php?threadid=109261]

PS:
Csharp-programmierer hat folgendes geschrieben:
Ich habe 2 Strings, die beide einen Wert zurückgeben.

Du meinst, du hast 2 Methoden, welche jeweils einen String zurückgeben (in der Programmierung und bei der Fehlerbeschreibung ist es wichtig, sich korrekt auszudrücken).


Csharp-programmierer - So 20.09.15 10:47

Ich habe es mir jetzt durchgelesen. Das die 2. Methode fast genau so aufgebaut ist, wie die erste, kann ich mir nicht erklären, warum ein Fehler auftritt. Könnten Sie mir vielleicht konkret erklären, wo in meinem Quellcode der Fehler liegt?


Th69 - So 20.09.15 11:13

Sorry, aber wir sind kein Fehlersuch-Forum.