Forum: PC-Programmierung Visual C# Events vs. Objekt Konstruktor


von ScharpingSharp (Gast)


Lesenswert?

Hallo,

ich habe folgendes Problem mit Visual Studio 2013 und WPF in C#.
Ich habe mehrere Objekte (z.B. TextBox, Label etc.) in einem WPF Window 
hinzugefügt und diesen entsprechende Ereignisse zugewiesen.

Zum Beispiel soll wenn in Textbox A ein Eintrag stattfindet das Label B 
umbenannt werden.
Mein Problem ist jetzt, dass sobald ich die Anwendung im Debug Modus 
starte, ich eine Fehlermeldung erhalte, weill Label B noch NULL ist! 
D.h. das Ereignis wird ausgelöst noch bevor alle Objekte in der WPF 
erzeugt wurden!
Wie kann das sein?
Was mache ich falsch?

Gibt es eine Möglichkeit global alle Events zu deaktivieren/aktivieren?

von Clemens L. (c_l)


Lesenswert?

Welches Ereignis?

von Becker (Gast)


Lesenswert?

Schau mal in die InitializeComponent()-Methode. Dort wird die Textbox 
initialisiert, bevor das Label instanziiert wird. Tausch die Blöcke aus 
oder mach die Zuweisung mit dem Text erst später.

von Odrr! (Gast)


Lesenswert?

Wie und wo hast du denn die Event-Handler zugewiesen? Wenn im WPF-Editor 
(also Objekt markieren, Eigenschaften, Ereignishandler) kann es den 
Fehler nicht geben. Wenn du "von Hand" initialisierst, mache das bitte 
mal im Loaded-Event des Hauptfensters.

von ScharpingSharp (Gast)


Lesenswert?

Hallo,

ich habe nicht von Hand initialisiert, sondern über den Propertie Editor 
im Window Editor generiert.
Ich verwende das Event TextChanged. Wenn ich das Event TextInput 
verwende startet das Programm, wirft aber kein Event wenn ich Text in 
die Textbox eingebe.
Mittlerweile habe ich die Events bis auf das eine TextChanged Event der 
einen TextBox reduziert. Komischerweise bekomme ich jetzt die 
Fehlermeldung:

"A first chance exception of type 
'System.Windows.Markup.XamlParseException' occurred in 
PresentationFramework.dll

Additional information: 'The invocation of the constructor on type 
'Generator.MainWindow' that matches the specified binding constraints 
threw an exception.' Line number '4' and line position '70'."

von Odrr! (Gast)


Lesenswert?

ScharpingSharp schrieb:
> ich habe nicht von Hand initialisiert, sondern über den Propertie Editor
> im Window Editor generiert.
> Ich verwende das Event TextChanged. Wenn ich das Event TextInput
> verwende startet das Programm, wirft aber kein Event wenn ich Text in
> die Textbox eingebe.

Das ist merkwürdig. Wenn ich auf "TextChanged" unter Events 
doppelklicke, wird die "TextBox_TextChanged hinzugefügt und bei Eingaben 
in der Textbox auch aufgerufen:

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
  MessageBox.Show("pling");
}

> Line number '4' and line position '70'."

Was steht an dieser Stelle? Wie sieht der Konstruktor aus (ist dort 
etwas, das eine Exception wirft)? Du kannst ja evtl. debuggen und dir 
nicht nur die Fehlermeldungen anschauen.

von Günter R. (muntablues)


Lesenswert?

Vergiss die ganzen Events und mach das ganze im Viewmodel und du hast ne 
saubere Lösung (auch für Erweiterungen).

Also kurz gesagt: Label bzw. TextBox Text an ein Property binden und im 
Setter das entsprechende Property vom Label ändern.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.