Unbehandelte Ausnahme bei Minimierung

  • VB.NET

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von Gonger96.

    Unbehandelte Ausnahme bei Minimierung

    Hallo ich habe ein kleines Programm mit VB 2010 erstellt. Habe dafür das "Ghost-Theme" Verwendet jedoch bekomme ich jedes mal wenn ich das Programm minimiere einen Fehler: Unbehandelte Ausnahme....




    s1.directupload.net/file/d/3303/e529uk9p_png.htm
    Intel Xeon E3 1230 V3 | Gigabyte H87- HD3 | AMD PowerColor Radeon HD 7950 PCS+ @ 1000 MHz | 8GB Ram | Kingston SSDNow V300 60 GB

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „musmuss“ ()

    Willkommen im Forum. :thumbup:
    Welcher Fehler genau kommt in welcher Zeile Deines Codes - bitte ein paar Zeilen Code posten, am besten die gesamte Prozedur.
    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!
    Anbei mal sein Bild in anzeigbarem Format (ich war einfach mal so dreist)
    Bilder
    • fehler.png

      37,53 kB, 455×330, 182 mal angesehen
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Beim Bitmap-Konstruktor?
    Haltepunkt drauf setzen und die Parameter alle verifizieren.
    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!
    F9 - Haltepunkt setzen / löschen
    F10 - Single Step
    F11 - Step in eine Prozedur hinein
    Klick auf Variable und Shift+F9 => Überwachung
    Und
    Sieh Dir mal die Möglichkeiten im Debug-Menü des Studios an:
    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!
    @musmuss:
    Ich vermute mal, Du gibst der Bitmap irgendwas, was mit der Größe der Form zusammenhängt. Die Form wird beim Minimieren automatisch auf die kleinst mögliche Größe zusammengezogen und an die Position -32000; -32000 verschoben.
    Da kommt schnell mal eine ungültige Zahl für die Breite oder Höhe heraus (z.B. 0 oder eine negative Zahl).
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    VB.NET-Quellcode

    1. Class GTheme
    2. Inherits Theme
    3. Sub New()
    4. MoveHeight = 28
    5. ForeColor = Color.FromArgb(100, 100, 100)
    6. SetTransparent(Color.Fuchsia)
    7. C1 = Color.FromArgb(41, 41, 41)
    8. C2 = Color.FromArgb(25, 25, 25)
    9. P1 = New Pen(Color.FromArgb(58, 58, 58))
    10. P2 = New Pen(C2)
    11. End Sub
    Intel Xeon E3 1230 V3 | Gigabyte H87- HD3 | AMD PowerColor Radeon HD 7950 PCS+ @ 1000 MHz | 8GB Ram | Kingston SSDNow V300 60 GB
    @musmuss: Ähm... k?
    Was zeigt uns dieser Code?

    Interessanter wäre der Code, bei dem Du die Bitmap-Instanz erstellst.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    @musmuss:
    Jetzt gibt's zwei Möglichkeiten.

    Entweder wird der Code bei mir nicht richtig angezeigt.

    Oder Du verstehst es nicht.
    Das sehe ich bei mir im Firefox:

    Ich tippe mal auf letzteres.

    Jetzt schau Dir nochmal den StackTrace an. Ich hab's sogar rot umrandet:

    Das heißt. In einer Methode "OnSizeChanged" der Klasse "Theme" erstellst Du eine Instanz von Bitmap. Denn die Zeile über der rot markierten zeigt den Konstruktor der Bitmap-Klasse. ("ctor" steht für "constructor").

    Und jetzt in Verbindung mit dem was ich gesagt habe:
    Interessanter wäre der Code, bei dem Du die Bitmap-Instanz erstellst.

    Instanz erstellen bedeutet den Konstruktor aufrufen. Und das ist genau das, was ich gerade erwähnt habe.

    Jetzt schau nochmal auf den ersten Screenshot. Siehst Du da eine Methode namens "OnSizeChanged"? Ich nicht.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    musmuss schrieb:

    das ist der Code aber egal.
    Dieser Dein Code wirft nicht solch Exception.
    Was ist denn Theme für eine Klasse?
    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!
    Soo er zeigt nun Fehler on Line 112 an
    Hier die Bitmap

    VB.NET-Quellcode

    1. Protected Header As Rectangle
    2. Protected Overrides Sub OnSizeChanged(ByVal e As EventArgs)
    3. Header = New Rectangle(7, 7, Width - 14, _MoveHeight)
    4. G.Dispose()
    5. B.Dispose()
    6. B = New Bitmap(Width, Height) "Das ist Line 112"
    7. G = Graphics.FromImage(B)
    8. Invalidate()
    9. MyBase.OnSizeChanged(e)
    10. End Sub
    11. #End Region
    12. #Region " Convienence "
    13. Sub SetTransparent(ByVal c As Color)
    14. If ParentIsForm Then ParentForm.TransparencyKey = c
    15. End Sub
    Intel Xeon E3 1230 V3 | Gigabyte H87- HD3 | AMD PowerColor Radeon HD 7950 PCS+ @ 1000 MHz | 8GB Ram | Kingston SSDNow V300 60 GB
    Mit der soeiner Salamitaktik wird das vermutlich nichts. Woher sollen wir wissen, wo du Width und Height her nimmst?

    Poste künftig bitte nachvollziehbare Ausschnitte und nicht nur solche Fetzen.
    Jo, ich würde jetzt einfach mal sagen, Width und Height sind die geerbten Member von Control. Und wenn die Form minimiert wird, sind diese Werte möglicherweise sehr sehr klein.
    Schreibe bitte vor der Zeile B = New Bitmap(Width, Height) diesen Code:

    VB.NET-Quellcode

    1. MessageBox.Show("Width=" & Width.ToString & ";Height=" & Height.ToString)

    Dann minimierst Du nochmal und schaust, was da angezeigt wird. Wahrscheinlich ist ein Wert 0 oder negativ.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Nun schlussfolgern wir also: Der Code macht keinen Sinn, wenn die Form minimiert ist. Also prüfen wir, ob der WindowState ungleich Minimized ist, und führen ihn nur dann aus ;)

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !