Das Designerladeprogramm hat keine Stammkomponente bereitgestellt, aber den Grund nicht angegeben.

  • VB.NET

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

    @RodFromGermany

    Ich hab in der Hauptseite.Designer.vb in der InitializeComponent() was gefunden. Da ist eine solche Zeile:

    Me.ChromiumWebBrowser1 = New CefSharp.WinForms.ChromiumWebBrowser()

    Da ist alles rechts vom Gleichheitszeichen hellgrün gezackt unterstrichen.

    Hoffentlich ist das der Fehler... :S

    Was meinst du dazu?

    kafffee schrieb:

    Was meinst du dazu?
    Mach da mal ein MouseHOver, da sollte er was anzeigen.
    Was?
    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!
    @kafffee Du sollst einen anderen Konstruktor verwenden.
    Möglicherweise geht das nur, wenn Du den in der Form selbst instanziierst, nach dem Aufruf von InitializeComponents().
    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

    Also alles aus dem Designer auskommentieren, was mit ChromiumWebBrowser zu tun hat und dann Folgendes in meinen Code rein?:

    VB.NET-Quellcode

    1. Imports CefSharp.WinForms
    2. Imports CefSharp
    3. Public Class Form1
    4. Private WithEvents browser As ChromiumWebBrowser
    5. Public Sub New()
    6. InitializeComponent()
    7. Dim settings As New CefSettings()
    8. CefSharp.Cef.Initialize(settings)
    9. browser = New ChromiumWebBrowser("https://html5test.com")
    10. panBrowser.Controls.Add(browser)
    11. End Sub
    12. End Class

    kafffee schrieb:

    und dann Folgendes in meinen Code rein?
    Warum probierst Du es nicht mal aus, ohne die Mutti zu fragen?
    Tue es und berichte dann, was passiert ist.
    Ich arbeite nicht mit dem Chromium-Browser, ich kann dazu nix sagen.
    Und:
    Lösche alles im Designer-Code, beim nächsten Bearbeiten der GUI fliegt das sowieso raus.
    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

    OK also habs so gemacht und der Fehler scheint behoben zu sein. Dafür gibts drei neue Fehler. diesmal mit den Steuerelementen der MetroSuite. Ich habs mal als Screenshot angehängt. Beim dritten zeigt er mir sogar die fehlerhafte Codezeile in der Hauptseite.Designer.vb an. Sie lautet:

    Me.Controls.Add(Me.MetroTabControl1)

    Ich denke die drei Fehler hängen alle zusammen und es gibt eine einfache Lösung, nur bin ich mit meinem Latein am Ende...
    Bilder
    • screenshot metrosuite fehler.jpg

      440,49 kB, 1.600×900, 53 mal angesehen
    @kafffee ... wurde nicht gefunden.
    Na dann füge sie (wieder | noch einmal) hinzu.
    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

    Ja bloss wie? Und was genau soll ich da wieder zufügen? Die DLL nochmal ins Programmverzeichnis kopieren? Oder über Verweise zufügen? Das TabControl hab ich damals als Control auf die Form gezogen. Bloss wenn ich Hauptseite[Entwurf] nicht öffnen kann...? Oder gibt's eine andere Methode um Controls (manuell zuzufügen)?

    kafffee schrieb:

    Die DLL nochmal ins Programmverzeichnis kopieren? Oder über Verweise zufügen?
    Das Kopieren hatten wir doch einst perfekt gelöst.
    Der Verweis könnte flöten gegangen sein.
    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!
    @kafffee Neustart PC, Neustart Studio.
    Hilft manchmal Wunder.
    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

    Ja ich weiss das hatte ich mehrfach versucht. Das mit der MetroSuite lag an meinem Virenscanner der hatte die DLL unter Quarantäne gestellt und als Trojaner betitelt. Das hab ich grad zufällig entdeckt. Und das obwohl ich meinen Projektordner vom Virenscan ausgeschlossen hab.

    Naja wollen wir mal hoffen dass dem nicht so ist...
    Hallo zusammen, ich möchte das Thema noch mal aufgreifen, da ich im Moment die gleiche Meldung habe und mir auch erst mal keinen Reim darauf machen konnte.
    In meinem Fall ist es so, dass ich auf meinem GUI Form ein recht mächtiges UserControl sitzen habe.
    Entferne ich das UserControl funktioniert der Wechsel vom Code zum Designer.
    Ist das UserControl auf dem Form, dann eben nicht mehr und dich bekomme besagte Meldung.
    Alle bisherigen Tipps den Designer zu Debuggen haben bei mir nicht funktioniert.
    Ich bin also jetzt Schritt für Schritt durch das UserControl durch, da ja dort der Fehler zu vermuten ist.
    Jetzt hat sich folgendes gezeigt:
    Ich habe Dispose() von der UserControl.Desginer.vb in die UserControl.vb verlegt, da zum Einen im UserControl einige Handler eingerichtet werden, die ich im Dispose()-Fall wieder entfernen will.
    Außerdem wird aus Dispose() ggf. noch eine Funktion aufgerufen, sofern ein bestimmtes Flag gesetzt ist.
    Die Reihenfolge in Dispose() war bisher wie folgt:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. If ProjectWideVariables.bApplicationIsTerminated = False Then
    2. Call IfParentFormIsClosedRemoveItFromDataLoggerChannelSelectors()
    3. End If
    4. 'Handler löschen
    5. For _i As Integer = 1 To 20
    6. RemoveHandler DirectCast(Me.Controls("mxctrl_DataLogger" & _i.ToString("00")), ACU_Controls.MuxControl).evt_MuxControlSelectedIndexORInvertCheckedChanged, AddressOf Me.DataLoggerMuxChanged
    7. Next
    8. RemoveHandler mod_Events.evt_modEvents_To_frmDataLogger_ucDataLoggerMuxControlSelectionChanged, AddressOf CheckIfDataLoggerChannelAlreadyUsedByOtherModule
    9. Try
    10. If disposing AndAlso components IsNot Nothing Then
    11. components.Dispose()
    12. End If
    13. Finally
    14. MyBase.Dispose(disposing)
    15. End Try

    Damit hat der Wechsel vom Code zum Designer nicht funktionert.
    Jetzt habe ich es umsortiert nach:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Try
    2. If disposing AndAlso components IsNot Nothing Then
    3. If ProjectWideVariables.bApplicationIsTerminated = False Then
    4. Call IfParentFormIsClosedRemoveItFromDataLoggerChannelSelectors()
    5. End If
    6. 'Handler löschen
    7. For _i As Integer = 1 To 20
    8. RemoveHandler DirectCast(Me.Controls("mxctrl_DataLogger" & _i.ToString("00")), ACU_Controls.MuxControl).evt_MuxControlSelectedIndexORInvertCheckedChanged, AddressOf Me.DataLoggerMuxChanged
    9. Next
    10. RemoveHandler mod_Events.evt_modEvents_To_frmDataLogger_ucDataLoggerMuxControlSelectionChanged, AddressOf CheckIfDataLoggerChannelAlreadyUsedByOtherModule
    11. components.Dispose()
    12. End If
    13. Finally
    14. MyBase.Dispose(disposing)
    15. End Try


    Ich habe die Vermutung, dass der Designer ein Problem bekommt, wenn er im Dispose() außerhalb der If disposing AndAlso components IsNot Nothing Thenelse.. End If Handler entfernen soll.
    Im Moment sieht es so aus, als ob es jetzt funktionieren würde.
    Es reicht im Übrigen aus, nur die RemoveHandlerin die If-Abfrage zu packen.
    wird der RemoveHandler nun überhaupt noch jemals ausgeführt?

    wahrsscheinlich hat das Problem nix mit components zu tun.
    Ich denke eher, dass Me.Controls("mxctrl_DataLogger" & _i.ToString("00")) unter bestimmten Bedingungen im Designer Nothing ergibt, und das führt zu einer NullReference-Exception, und dann ist der Designer beleidigt.

    also probierma sowas:

    VB.NET-Quellcode

    1. For _i As Integer = 1 To 20
    2. Dim ctl = DirectCast(Me.Controls("mxctrl_DataLogger" & _i.ToString("00")), ACU_Controls.MuxControl)
    3. If ctl IsNot Nothing Then RemoveHandler ctl.evt_MuxControlSelectedIndexORInvertCheckedChanged, AddressOf Me.DataLoggerMuxChanged
    4. Next



    auch sonst kannste nun sehr selektiv Codezeilen entfernen, und so herausfinden, welche zeile genau den Fehler verursacht.
    Die allgemeine Dispose-Funktionalität würde ich keinesfalls von components IsNot Nothing abhängig machen - das wird glaub nix damit zu tun haben.

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