Problem mit verschachtelten structures

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Memo.

    Problem mit verschachtelten structures

    Hallo,

    ich hoffe jemand hier kann mir helfen, ich habe ein Problem mit einer verschachtelten Struktur und ich kapier wirklich nicht was ich da falsch mache.

    Etwas vereinfacht sehen die structures folgendermaßen aus:

    Quellcode

    1. Public Structure PathTyp
    2. Public Up As System.Drawing.Image
    3. Public Down As System.Drawing.Image
    4. Public tabSelected As System.Drawing.Image
    5. Public tabNotSelected As System.Drawing.Image
    6. End Structure
    7. Public Structure ButtonTypes
    8. Public myPath As PathTyp
    9. Public Status As Integer
    10. End Structure
    11. Public Structure Butts
    12. Public Con As ButtonTypes
    13. Public Seg As ButtonTypes
    14. Public tabCon As ButtonTypes
    15. Public tabSpl As ButtonTypes
    16. End Structure
    17. Public smButtons As Butts


    Soweit so gut, jetzt weise ich im Load Event den Image Variablen BMP-Bilder zu, diese werden später im Programm mit zB. pb1.Image = smButtons.tabCon.myPath.tabSelected in picture Boxen gelegt:

    Quellcode

    1. PathApp = Application.StartupPath
    2. PathPictures = PathApp & "\Pictures\"
    3. smButtons.tabCon.myPath.tabSelected = Image.FromFile(PathPictures & "Pic1.bmp")
    4. smButtons.tabCon.myPath.tabNotSelected = Image.FromFile(PathPictures & "Pic2.bmp")
    5. smButtons.tabSpl.myPath.tabSelected = Image.FromFile(PathPictures & "Pic3.bmp")
    6. smButtons.tabSpl.myPath.tabNotSelected = Image.FromFile(PathPictures & "Pic4.bmp")


    Jetzt wirds seltsam.
    Wenn ich das Programm im Einzelschritt durchlaufen lassen, dann werden die ersten 2 Bilder noch zugewiesen (Zeile 4+5), wenn der Compiler in die nächste Zeile gehen sollte, bringt er statt dessen mein Windows Form nach vorne und der Compiler führt auch keine Einzelschritte mehr aus. Ich habe im Programm auch einen Teil der auf das Resize Event des Form reagiert, wenn ich also das nach vorne gepoppte Form vergrößere springt der Compiler wie gewollt in das Event für den nächsten Einzelschritt.

    Ich habe schon diverses versucht, aber nichts hilft, irgendwie komme ich immer wieder an den gleichen Punkt.

    Kann mir von den Experten hier bitte, bitte jemand einen Tip geben, was ich da falsch mache.

    Danke im Voraus.
    Sascha

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „PeterPan0815“ ()

    PeterPan0815 schrieb:

    Ich habe im Programm auch einen Teil der auf das Resize Event des Form reagiert

    Da bin ich neulich drauf gestoßen, dass das abonnieren dieses Events alle anderen Events deaktiviert.
    Das würde ich bei komischem Verhalten als erstes rausnehmen, werweiß, was dieses komische Event sonst noch so anrichtet.

    Tatsächlich ist in .Net annähernd nie eine Behandlung des Resize-Events nötig, wenn man sich mit dem Docking (oder dem weniger mächtigen Anchoring) auskennt, sowie den kultigen Containern, zB. SplitContainer.
    Verschiebe den Code mal von der Form_Load in eine Button_Click, da werden ordentliche Exception geworfen (in der Form_Load nicht!), die kannst Du auswerten.
    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!
    :D :D :D Habe den Fehler gefunden :D :D :D
    So was bescheuertes, das war kein Brett vorm Kopf, das war ein ganzer Wald.

    In den Namen der Bilder (nicht im oben gezeigten vereinfachten Code, sondern die richtigen aus meiner Anwendung) war ein Schreibfehler, im Filnamen waren Spaces im Code waren Unterstriche.
    Anscheinend bricht das Programm dann nicht wie ich erwartet hätte mit einem Laufzeitfehler ab, wenn es die Datei nicht findet, sondern beendet "nur" das Form_Load Event, was dazu führt, das keine Bilder in die Picture Boxes gelegt werden, da diese vorher gar nicht geladen wurden. Da ich auch keinen Laufzeitfehler hatte, bin ich gar nicht auf die Idee eines Schreibfehlers gekommen.

    Danke für die schnellen Tips, ich bin gerade dabei mit einem größeren Programm von VB6 auf vb.net umzusteigen, ich fürchte ich werde im Tal der Tränen hier sicherlich noch die eine oder andere "blöde" Frage stellen.

    PeterPan0815 schrieb:

    bricht das Programm dann nicht wie ich erwartet hätte mit einem Laufzeitfehler ab, wenn es die Datei nicht findet, sondern beendet "nur" das Form_Load Event

    Dassis aber auch ein schlechtes Zeichen. Türlich mussn Laufzeitfehler kommen.

    Hast du irgendwas mit Threading, oder Drag and Drop in deiner Anwendung?

    Ansonsten vlt. Computer neustarten (?)
    In der Form_Load() kommen nun mal keine Exceptions, die Form_Load() wird bei einer Exception einfach verlassen und mit dem Rest weitergemacht.
    Deswegen: => Button_Click()
    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!
    Habe gerade erst angefangen die Anwendung auf vb.net umzuschreiben, die grafische Gestaltung der Buttons und Tabs ist das Erste was ich mache. Das Programm besteht bisher aus wenigen Codezeilen, nichts mit Threading oder Drag and Drop.
    Da kein Laufzeitfehler kam bin ich ja auch erst gar nicht auf die Idee gekommen, das die Filenamen falsch sein könnten
    Ists dein erstes Projekt? Dann stell mal sicher, das Option Strict On! ist. Möglichst gleich in den Projekteinstellungen, und auch in den Optionen der IDE, dass auch in Zukunft ein neues Projekt nicht zunächst mal mit Strict Off erstellt wird.

    RodFromGermany schrieb:

    In der Form_Load() kommen nun mal keine Exceptions,
    Bilder
    • Error.png

      19,33 kB, 763×302, 101 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    RodFromGermany schrieb:

    In der Form_Load() kommen nun mal keine Exceptions, die Form_Load() wird bei einer Exception einfach verlassen und mit dem Rest weitergemacht.
    Deswegen: => Button_Click()

    Soviel ich weiß nur bei Win7 und 64-Bit ! :(
    Hatte das Problem auch mal. Bei Funktionen kann man wenigstens die Schnellüberwachung aufrufen und man hat wenigstens eine Fehlermeldung. ;)