Laden...

[gelöst] Object reference not set to an instance of an object.

Erstellt von Ingo79 vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.601 Views
I
Ingo79 Themenstarter:in
79 Beiträge seit 2007
vor 16 Jahren
[gelöst] Object reference not set to an instance of an object.
public partial class Haupt : Form
    {
        public Haupt()
        {
            InitializeComponent();
        }

        private void Main_Load(object sender, EventArgs e)
        {
            Menu menu = new Menu();
            menu.TopLevel = false;
            menu.BringToFront();
            menu.TopMost = true;
            this.splitContainer1.Panel1.Controls.Add(menu);
            menu.ButtonAuswertung.Click += new EventHandler(menu_clicked);
            
            menu.Show();
        }

        private void menu_clicked(object sender, EventArgs e)
        {
            Menu menu = sender as Menu;
            if (menu != null)
            {

                this.textBox1.Text = menu.ButtonAuswertung.Text;
            }

        }
public partial class Menu : Form
    {
        public Menu()
        {
            InitializeComponent();
        }



        private void ButtonZeiterfassung_Click(object sender, EventArgs e)
        {
            this.textBox1.Text = ButtonZeiterfassung.Text;

        }

        public string iClickedthis
        {
            get { return this.textBox1.Text; }
            set { this.textBox1.Text = value; }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.OK;

        }

        private void ButtonAuswertung_Click(object sender, EventArgs e)
        {
            this.textBox1.Text = ButtonZeiterfassung.Text;
            this.DialogResult = DialogResult.OK;

        }
        



    }

Laut dem FAQ für Form2toForm1

sollte das ja funktionieren?

aber:

private void menu_clicked(object sender, EventArgs e)
        {
            Menu menu = sender as Menu;
            if (menu != null)
            {

                this.textBox1.Text = menu.ButtonAuswertung.Text;
            }

hier ist menu immer NULL,
und bei " this.textBox1.Text = menu.ButtonAuswertung.Text;"
kommt die meldung
"Object reference not set to an instance of an object."

wo ist mein fehler?

Software für Selbstständige

(ob das Update von Firebird 2.0 auf Firebird 2.1 mich an den Rand des Wahnsinns bringt?}

184 Beiträge seit 2005
vor 16 Jahren

Ich würd jetzt mal tippen "sender" ist nicht dein Form sondern dein Button. Versuch mal auf Button zu casten, damit sollte es gehen.

I
Ingo79 Themenstarter:in
79 Beiträge seit 2007
vor 16 Jahren

Original von DCoder
Ich würd jetzt mal tippen "sender" ist nicht dein Form sondern dein Button. Versuch mal auf Button zu casten, damit sollte es gehen.

kannst du das bitte in c# ausdrücken?

Software für Selbstständige

(ob das Update von Firebird 2.0 auf Firebird 2.1 mich an den Rand des Wahnsinns bringt?}

184 Beiträge seit 2005
vor 16 Jahren

Naja... 😉

Kurz: "as Menu" wird zu "as Button".

Aber so wie ich das sehe registrierst du im Click Eventhandler deines Buttons (ButtonAuswertung) die Methode "menu_clicked". Sender in dieser Methode wird also "ButtonAuswertung" sein. Sprich du kannst in "menu_clicked" über sender auf den Button zugreifen.

I
Ingo79 Themenstarter:in
79 Beiträge seit 2007
vor 16 Jahren

Ich weiss nicht so richtig, daran kanns nicht liegen...

denn wenn ich im "main_load"


menu.Closed+= new EventHandler(menu_clicked);

statt


menu.ButtonAuswertung.Click+=new EventHandler(menu_clicked);

funktioniert es tadellos...

PS. und natürlich die "this.close" im form2 hinzufüge...

Software für Selbstständige

(ob das Update von Firebird 2.0 auf Firebird 2.1 mich an den Rand des Wahnsinns bringt?}

184 Beiträge seit 2005
vor 16 Jahren

Hm, du gibst mir doch jetzt grad eigentlich nur Recht, oder 😉

menu.Closed+= new EventHandler(menu_clicked);

hier ist der sender dein "menu"

menu.ButtonAuswertung.Click+=new EventHandler(menu_clicked);

hier ist der sender der Button "ButtonAuswertung"

Also entweder du greifst nicht immer über den sender auf das menu form zu, sondern speicherst eine Referenz in deiner Hauptform ab oder du benutzt sender, was dann aber auch nur für einen EventHandler eines gleichen Basistypen gilt!

Sprich: Der SENDER ist von dem Typ, bei dem du dein Event registrierst!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Ingo79,

zur eigentlichen Frage: [FAQ] NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt

Ansonsten bitte ich dich zu berücksichtigen, dass wir kein reines Anfängerforum sind. Deine Original-Fragen waren ok, aber die vielen Nachfragen waren nur nötig, weil dir scheinbar Grundlagen fehlen, die wir hier eigentlich voraussetzen. Bitte arbeite ein Buch wie http://www.galileocomputing.de/openbook/visual_csharp/ durch und bemühe dich vor Nachfragen durch Nachschlagen dieser Grundlagen immer erst selbst selbst eine Lösung zu finden.

herbivore

I
Ingo79 Themenstarter:in
79 Beiträge seit 2007
vor 16 Jahren
hier ist der sender der Button "ButtonAuswertung"

Manchmal sieht man den Wald vor lauter Bäumen nicht 🙂

danke Dcoder

@ herbivore

danke für deine Meldungen.

Man ist aber nicht immer ein Anfänger, nur weil man sich in bestimmten Bereichen nicht auskennt, bzw zu wenig Routine hat.

Liebe Grüsse

Ingo

Software für Selbstständige

(ob das Update von Firebird 2.0 auf Firebird 2.1 mich an den Rand des Wahnsinns bringt?}

1.433 Beiträge seit 2006
vor 16 Jahren

@Ingo79

Man ist aber nicht immer ein Anfänger, nur weil man sich in bestimmten Bereichen nicht auskennt, bzw zu wenig Routine hat.

Da gebe ich Dir vollkommen recht.

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Ingo79,

ich wollte dir mit dem Anfänger nicht zu nahe treten. Mit ging es auch nicht darum, dich als Anfänger zu "überführen", sondern eine Aussage über die Art der gestellten Nachfragen bzw. der Konsequenz daraus zu machen. Wenn du kein Anfänger bist, wird es dir nur um so leichter fallen, dir die fehlenden Grundlagen in dem zur Diskussion stehenden Bereich selbst anzueignen. 🙂

herbivore