C# WPF Visibility Problem

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    C# WPF Visibility Problem

    Hallo Leute,

    ich bin gerade dabei von C# Windows Forms auf C# WPF umzusteigen. Da stellen sich mir aber einige Probleme.
    Mein aktuelles Problem ist die Visibility.


    Ich überprüfe hier, ob die Eingabe 100 überschreitet.

    C#-Quellcode

    1. double ckeck;
    2. double.TryParse(textBox2.Text, out check);
    3. if (check > 100)
    4. {
    5. textBox2.TextDecorations = TextDecorations.Underline;
    6. label6.Visibility = Visibility.Visible;
    7. }
    8. else
    9. {
    10. textBox2.TextDecorations = null;
    11. label6.Visibility = Visibility.Hidden;
    12. }




    Danke für eure Hilfe im Voraus.
    MFG DaNeubi
    @DaNeubi Auch ohne Glaskugel schätze ich mal, dass das Label nicht instanziiert ist.
    Ansonsten sag uns, welches Objekt null ist.
    Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich habe leider keine Ahnung von WPF. Aber eben ein neues Projekt aufzumachen und das oben gezeigte zu Testen ist ja wohl kein Problem.
    Ich habe es mit Label, Button und weiteren Textboxen getestet. Sobald Du versuchst WPF-Steuerelement = Visible.Hidden zu setzen, fliegt eine (bei mir völlig unverständliche) Exception.

    Die Zeile textBox.TextDecorations = null; ist jednefalls kein Problem, man sieht auch schön dass es funzt., solange die nächste Zeile nicht vorhanden ist.
    Dürfte ein ganz klassisches Problem sein:
    Konstruktor des Fensters wird aufgerufen
    InitializeComponent wird aufgerufen
    textBox2 wird erstellt
    textBox2.TextChanged-Event wird abonniert
    textBox2.Text wird nachher gesetzt -> TextChanged-Event wird ausgelöst
    Im TextChanged-EventHandler wird label1 verwendet -> Exception fliegt
    label6 wird erst später in der InitializeComponent-Methode erstellt, aber so weit kommt es gar nicht erst.

    Ich würde da sagen: Nimm Bindings. Wenn Du WPF verwenden möchtest, solltest Du sowieso lernen, wie MVVM funktioniert.
    Ansonsten:
    Du müsstest irgendwo einen Konstruktor haben. Da wird InitializeComponent aufgerufen. Verschiebe alle AddHandler (also alles, was wie Irgendwas.EinEvent += new EinEventHandler(Handler) aussieht) aus dieser InitializeComponent-Methode in den Konstruktor nach den Aufruf. Das könnte natürlich weitere Implikationen haben.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils