Announcement

Collapse
No announcement yet.

nullreferenceexception bei SizeChange

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • nullreferenceexception bei SizeChange

    Hallo zusammen,

    ich habe folgendes Problem und ich komme einfach nicht weiter!

    Ich habe ein VS2010 Projekt in dem ich ein Formular (Form1) anzeige. Unter den Erreignissen des Form1 bei SizeChange ist die Funktion SizeChange_Form1(Object sender, EventArgs e) hinterlegt. D.h. jedes mal wenn ich die größe ändere, würde diese Funktion aufgerufen werden. Der inhalt der Funktion sieht wie folgt aus:

    Code:
     this.myForm1.Size = new Size((this.Size.Width - 10), (this.Size.Height - this.Icon.Height));
    Eigentlich nichts besonderes, zumal genau diese Codezeile mehrmals im Projekt vorkommt (halt ohne aufruf der Funktion 'SizeChange_Form1').

    Beim Ausführen des Projektes bekomme ich nun aber eine nullreferenceexception bei genau dieser Funktion!!!! Diesen Code ausdokumentiert läuft aber alles fehlerfrei ab!

    Ich hoffe, dass mir da jemand sagen kann warum das so ist und was ich dagegen tun kann???

    Danke Fred

  • #2
    Du solltest das durchdebuggen und nachsehen welche deiner Annahmen in dieser Codezeile nicht zutreffen. Z.B. das myForm1 nicht oder noch nicht existiert.

    Comment


    • #3
      Hallo Ralf,

      danke für deine Antwort. Leider ist es nicht einfach damit gelöst!

      Das ganze liegt in der Form1.cs Datei ab und myForm1 wird zu beginn deklariert mit:

      Code:
      private Panel myForm1; //Panel um ComboBoxen einzuhaengen und Scrollleisten zu erzeugen
      also daran kanns nicht liegen! Zudem ist an anderen stellen de selbe code angegeben.

      Er hat irgenwie nur in der Funktion das Problem!

      Gruß Fred

      Comment


      • #4
        Er hat irgenwie nur in der Funktion das Problem!
        Wie gesagt die Lösung liegt im debuggen. Setzt einen Breakpoint drauf und sieh dir an ob eins der beteiligten Objekte null ist.


        PS. Warum heißt ein Panel myForm? Warum sized sich das Panel nicht automatisch selbst da es ja offensichtlich zu einer Form gehört?

        Comment


        • #5
          Hi Ralf,

          entschuldige... hab ich mich vll falsch ausgedrückt!!

          ... also das Panel hieß schon myForm1 als ich das Projekt übernommen habe^^

          Die sache ist eben die, dass wenn ich das Form1-Blatt in der Runtime kleiner ziehe als die benötigte größe kommen eben Scrollbalken automatisch hinzu. Ich lege in der SizeChanged() nur die Position der Balken fest oder habe ich da einen denkfehler??
          edit: Wenn ich den Aufruf der Funktion unterdrücke setzt er mir die Balken dort hin wo ich sie an einer anderen Codestelle (kurz nach Aufruf von Form1.cs) haben wollte.

          Bzgl. dem Debuggen: die sache ist die, dass ich das ganze in XP programmiert und dort läuft es. Laufen soll das ganze naher aber auf Windows 7 und da habe ich leider kein VS2010 drauf um das zu debuggen. D.h. ich weiss somit nicht welches Objekt = null ist.

          Grüße Fred

          Comment


          • #6
            Bzgl. dem Debuggen: die sache ist die, dass ich das ganze in XP programmiert und dort läuft es. Laufen soll das ganze naher aber auf Windows 7 und da habe ich leider kein VS2010 drauf um das zu debuggen. D.h. ich weiss somit nicht welches Objekt = null ist.
            Ah. Eins ~dieser~ Probleme

            Du solltest a.) Wenn du das nocht nicht hast ein richtiges Exceptionhandling einbauen das dir auch ein StackTrace liefert daran erkennst du vielleicht mehr und b.) mal die Einstellungen dieser Windows 7 Machine prüfen. Bei UI Problemen wäre zum Beispiel interessant ob auf der User eine andere/Hohe DPI Einstellung vorgenommen hat. Also was anderes als die standardmäßigen 96 DPI. Das zusätzliche Skalieren lösst schonmal zusätzliche Events oder Events in einer anderen Reihenfolge aus als das man das erwartet.

            Im Extremfall ist bei Visual Studio auch ein Remote Debugger dabei.

            Comment


            • #7
              probier mal:

              Code:
              if(this.Icon!=null)
              this.myForm1.Size = new Size((this.Size.Width - 10), (this.Size.Height - this.Icon.Height))

              Comment


              • #8
                Hallo zusammen,

                so also mein Wissenstand hat sich erweitert!! Ich habe ein paar MsgBoxen eingebaut und jeweils eine abfrage gemacht also ungefähr so:
                Code:
                if(this.myForm1!=null) then MsgBox und   if(this.Icon!=null) then MsgBox
                jetzt habe ich festgestellt, dass ich nur beim Aufruf der Exe-File (also beim allerersten Mal) das Problem habe, dass das Objekt myForm1 nicht zugewiesen ist. Nach dem sich das Formular allerdings aufgebaut hat und die ganzen Elemente angezeigt werden besteht dieses Problem bzgl. Win7 Rechner nicht mehr! Wie kann das sein?

                Kann mir vll jemand sagen ob ich das einfach ignorieren kann oder eher nicht??
                Hört sich vll n bissel bescheuert an aber ich bin halt neu in der Hochsprachenentwicklung

                Sry

                Gruß Fred

                Comment


                • #9
                  Dafür müßten wir mehr von der Form wissen. Wann wird myForm1 erzeugt? Machst du irgendwas spezielles im Constructor der Form? Passiert noch was in den beim Erzeugen der Form gefeuerten Events (Load, Shown etc.) ?

                  Comment

                  Working...
                  X