Exception beim Aktivieren der DoubleBuffered Eigenschaft

  • VB.NET
  • .NET (FX) 4.0

Es gibt 35 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Exception beim Aktivieren der DoubleBuffered Eigenschaft

    Hallo liebe Community!
    Ich hab seit laaanger Zeit mal wieder einen neuen PC. Folglich musste ich auch Visual Studio neu installieren.
    Seit der neuen Installation kann ich jedoch, komischerweise, in einem Control die DoubleBuffered Eigenschaft nicht ändern.

    Ich mache dies in der Sub New des Controls, wie folgt:

    VB.NET-Quellcode

    1. Sub New()
    2. SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
    3. UpdateStyles()
    4. End Sub


    Jedoch funktionieren folgende Varianten auch nicht (logischerweise):

    VB.NET-Quellcode

    1. Sub New()
    2. SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer Or ControlStyles.UserPaint Or ControlStyles.ResizeRedraw, True)
    3. UpdateStyles()
    4. 'Sowie
    5. DoubleBuffered = True
    6. End Sub


    Es kommt zu folgender Fehlermeldung:

    Quellcode

    1. System.ArgumentException wurde nicht behandelt.
    2. Message: Ein Ausnahmefehler des Typs "System.ArgumentException" ist in System.Drawing.dll aufgetreten.
    3. Zusätzliche Informationen: Ungültiger Parameter.


    Ich zerbreche mir den Kopf daran, weil es doch funktionieren sollte, BEZIEHUNGSWEISE immer so funktioniert hat.

    Liebe Grüße Gather_
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Hm ... am Framework kann's kaum liegen, die Funktionen sind ja ab 1.1 verfügbar. In nem neuen Projekt bestehend aus dieser Codezeile (bezüglich der MainForm) und ein bisken drumrum wird es wahrscheinlich auch nicht funktionieren, wie Du es bestimmt schon geprüft hast, richtig? Nur zur Sicherheit, um alle Klarheiten zu beseitigen: WinForms?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Jap WinForms.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Hi
    schreib' mal den Stack Trace, bzw. an welcher Stelle tritt die Exception auf? UpdateStyles oder wann anders? UpdateStyles ist an sich überflüssig, wenn das Steuerelement-Handle noch nicht erstellt wurde. Ist IsHandleCreated auf true?

    Die GDI+-bezogenen Exceptions sind eher dürftig, was Infos angeht.

    Viele Grüße
    ~blaze~
    @~blaze~, @ErfinderDesRades: Die ArgumentException tritt bei UpdateStyle() auf.
    @ErfinderDesRades:
    System: IntelCore i7-7700 mit Windows 7 Ultimate
    Framework: .NET 4.0
    VS: Ultimate 2013
    @RodFromGermany: Ja unter C# auch. Beziehungsweise lässt sich das Control nicht einmal auf der Form platzieren, ohne einer "Ungültigen Parameter"-Fehlermeldung.

    Ganz Spannend ist, folgendes wird mir ebenfalls angezeigt wenn ich weiter nachforsche:
    System.Drawing.pdb nicht geladen.
    System.Drawing.pdb enthält die Debuginformationen, die erforderlich sind für die Suche nach der Quelle für Modul System.Drawing.dll


    Außerdem, UpdateStyles() selber wirft nur den Fehler wenn der DoubleBuffer aktiviert ist.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Ohne den Stacktrace geht in dem Fall wohl fast nichts. Ich habe beim Durchlesen der UpdateStyles-Methode die Stelle, an der sie auftreten könnte, nicht ausmachen können. Die Dokumentation sieht ebenfalls keine Exceptions vor. Ich habe allerdings nicht in die oftmals verwendete SR-Klasse reingeschaut. Da sollte das aber wohl kaum auftreten.

    Viele Grüße
    ~blaze~
    @RodFromGermany: Verwende nun VS 2017 und der Fehler tritt immernoch auf.

    Quellcode

    1. "RControls.exe" (CLR v4.0.30319: DefaultDomain): "C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
    2. "RControls.exe" (CLR v4.0.30319: DefaultDomain): "c:\users\martin\documents\visual studio 2017\Projects\RControls\RControls\bin\Debug\RControls.exe" geladen. Symbole wurden geladen.
    3. "RControls.exe" (CLR v4.0.30319: RControls.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualBasic\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualBasic.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
    4. "RControls.exe" (CLR v4.0.30319: RControls.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
    5. "RControls.exe" (CLR v4.0.30319: RControls.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
    6. "RControls.exe" (CLR v4.0.30319: RControls.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
    7. "RControls.exe" (CLR v4.0.30319: RControls.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Accessibility\v4.0_4.0.0.0__b03f5f7f11d50a3a\Accessibility.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    8. "RControls.exe" (CLR v4.0.30319: RControls.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Remoting\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Remoting.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
    9. "RControls.exe" (CLR v4.0.30319: RControls.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing.resources\v4.0_4.0.0.0_de_b03f5f7f11d50a3a\System.Drawing.resources.dll" geladen. Das Modul wurde ohne Symbole erstellt.
    10. "RControls.exe" (CLR v4.0.30319: RControls.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\mscorlib.resources\v4.0_4.0.0.0_de_b77a5c561934e089\mscorlib.resources.dll" geladen. Das Modul wurde ohne Symbole erstellt.
    11. Das Programm "[7724] RControls.exe" wurde mit Code 0 (0x0) beendet.

    Wird in der Ausgabe angezeigt.
    VS 2017, entfernt dann einfach das Control von der Form. Spannend.

    Zeile 7 ist das EInzige was mir hier komisch vorkommt.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    @Gather Das sieht mir eher nach Warnungen aus.
    Bist Du zufällig im Release-Mode und hast mit F5 gestartet?
    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!
    @RodFromGermany
    Nein war ich nicht. Aber zum Vergleich, Im Release-Mode sowie mit F5:


    Dieses Fenster öffnet sich im Debug-Modus nicht.

    Edit:// Folgendes gabs auch:
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


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

    @Gather Dass ist eine Warnung.
    Sieh mal bei den Studio-Einstellungen nach, ob da der Schalter Warnung als Fehler (oder so) aktiv ist.
    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 finde dies leider nicht.. @RodFromGermany
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    @RodFromGermany:
    Es ändert sich dann ansich nichts, jedoch denke ich, dass der Fehler bei der System.Drawing.Graphics.GetHdc() Methode auftritt.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    mal ganz blöd von der Seite her gefragt, kann es nicht evtl. sein das sich manche Komponenten fehlerhaft installiert haben ?

    hast du evtl. schon mal alle VisualStudio installationen deinstalliert, und im Anschluss daran neuInstalliert ?

    Oder evtl. gibts ja ein InstallationsProblem bei den installierten Runtimes, lad dir evtl. mal die "AIO Runtimes" runter und lass alles neu installieren.

    Greets
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    Gather schrieb:

    System.Drawing.Graphics.GetHdc()
    Lässt sich da was reproduzierbares auf die Beine stellen?
    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!
    eben nicht. Aber interessanterweise, ein Kollege welcher ebenfalls Windows 7 Ultimate verwendet, kann den Code auch nicht ausführen..
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!