Chart-Control ist nicht definiert

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von loeffel.

    Chart-Control ist nicht definiert

    [i][i][i][/i][/i][/i]Hallo Gemeinde,
    hallo Genies,
    hallo Experten!

    Ich habe ein riesiges Problem.
    Im Jahre 2015 habe ich mit VS 2015 und VB.net ein Projekt erstellt, in dem ein Chart-Control verwendet wurde. Ich weiß heute nicht mehr, ob es das Chart-Control aus der Toolbox war, oder ob ich dieses Control von extern eingebunden habe.
    In den Verweisen stand der Eintrag: "System.Windows.Forms.DataVisualization.Charting.Chart"
    Leider weiß ich auch nicht mehr, wie dieser Verweis zustande kam.

    Mein Problem ist:
    Das Projekt liegt wieder bei mir aufm Tisch.
    Statt VS 2015 arbeite ich mit VS 2022 Community.
    Wenn ich das Projekt starte, kommen einige Fehlermeldungen. Die erste lautet:
    Fehler BC30002 Der Typ "System.Windows.Forms.DataVisualization.Charting.Chart" ist nicht definiert.

    Unter den Verweisen finde ich den aus VS 2015 bekannten Eintrag
    "System.Windows.Forms.DataVisualization.Charting.Chart" nicht.

    Diesen Eintrag jetzt unter VS 2022 in den Verweisen (Abhängigkeiten) einzufügen ist mir bis jetzt nicht gelungen. In der COM-Liste wird er nicht aufgeführt.

    Habt Ihr Tipps, was ich tun kann? - Vielen Dank!
    Menü Extras -> Toolboxelemente auswählen … -> Reiter .NET Framework-Komponenten -> Chart anhakeln und bestätigen
    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.

    Norbert_Karl schrieb:

    Habt Ihr Tipps, was ich tun kann?
    Erstelle ein neues leeres Projekt und zieh Dir aus der Toolbox => Daten => Chart das aktuelle Chart-Control auf die Form.
    Dann kannst Du beide Projekte vergleichen und wenn es dasselbe Control ist, die Deklaration übernehmen.
    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!
    So, bin wieder da.

    Ja, ist (war auf) .NET 6 eingestellt. Steht jetzt auf .NET 5. Bring bezgl. des folgenden Textes keine Änderung.
    Muss ich ein anderes .NET Framework nachladen?

    Ich habe unter Extras - Toolboxelemente auswählen nachgeschaut, da ist das Häkchen bei Chart gesetzt. Wenn ich mit abgewählten Häkchen das Programm starte, ändert sich die Fehlermeldung nicht. Das (MDI)-Projekt enthält vier Forms mit dem Chart-Control. Diese vier Forms habe ich erst mal aus dem Projekt ausgeschlossen. Diesbezüglich kommen jetzt keine Fehlermeldungen.
    Stattdessen eine Neue:
    "Fehler BC30663 Das Attribut "TargetFrameworkAttribute" kann nicht mehrmals angewendet werden. Projektname C:\Users\Mein Name\Documents\Visual Studio 2022\Projects\EAss\obj\Debug\net6.0-windows\.NETCoreApp,Version=v6.0.AssemblyAttributes.vb 7 Aktiv"

    Sagt Euch das etwas?
    @Norbert_Karl Ich gehe mal davon aus, dass Du noch die alten Originalquellen hast.
    Hole sie Dir noch einmal und lass das Studio konvertieren und pass dabei auf, dass Du nach Framework konvertierst, dann sollte alles laufen.
    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!
    Aufgrund von Post#1 bin ich davon ausgegangen, dass das bestehende Projekt weiterbearbeitet wurde, nicht, dass ein neues Projekt (vom falschen Typ) erstellt wird.
    Du musst insofern von vorn anfangen, weil Du eben - wie geschrieben wurde - ein .NET-Framework-Projekt erstellen musst, kein .NET-Projekt.
    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.
    Jou.
    Mir ist völlig unklar, wie da ein NET-Projekt draus entstehen konnte.
    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!
    Bevor du dir die Arbeit machst dein Projekt in .NET-Framework neu zu schreiben, versuch es einmal mit einem Fork von System.Windows.Forms.DataVisualization für .net6.
    github.com/kirsan31/winforms-datavisualization
    github.com/FastReports/winforms-datavisualization bzw. nuget.org/packages/FastReport.DataVisualization/
    (Bei letzterem wurde der Namespace auf FastReport.DataVisualization geändert.)

    Oder ein Ersatz-Control
    github.com/ScottPlot/ScottPlot
    github.com/microcharts-dotnet/Microcharts
    Liebe Experten, Ihr seid Super!

    Das, was ich mit VS 2022 und .NET verbockt habe, ist nur noch peinlich.
    Zu Beginn habe ich mit VS 2022 das alte Projekt geladen und gestartet. Aber irgendwas funktionierte nicht.
    Ich bin dann in Panik geraten und habe mit VS 2022 ein neues Projekt mit den alten Daten aufsetzen wollen. Und damit nahm die cheizze seinen Lauf, nämlich, indem ich ein .NET Projekt erstellt habe, anstatt ein .NET-Framework Projekt.
    Ich habe dann all den Murks gelöscht und mit VS 2019 das alte Projekt geöffnet. Und siehe da, alles funktioniert bestens – bis hier her.

    Zur Verteilung des Projektes wurde damals nur eine .exe erstellt.
    Ich möchte diesmal auf meine Webseite einen Veröffentlichungsort festlegen.
    Unter den Projekteigenschaften habe ich meine Daten festgelegt und klick auf "Veröffentlichen". Dann bekomme ich die Fehlermeldung:
    "Fehler Die Datei "bin\Debug\Projektname.xml" wurde nicht gefunden", obwohl diese Datei vorhanden ist.

    Habt Ihr dafür eine Erklärung?
    Vielen Dank für Eure Hilfe!

    Norbert_Karl schrieb:

    obwohl diese Datei vorhanden ist.
    Eine Datei welchen Inhalts wird erwartet?
    Eine Datei welchen Inhalts findet er vor?
    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!
    Zur Info:
    Das Chart-Control ist zwar im Source fuer .NET (5, 6, 7, 8) veroeffentlicht, es gibt aber fuer .NET keine Designer-Unterstuetzung.
    Da der urspruengliche Framework Chart-Designer in Teilen auch einen benutzerdefinierten CodeDom-Serializer zur Verfuegung stellt, generierte der Control Designer des Chart-Controls den entsprechenden Initialisierungspart fuer InitializeComponent selbstaendig, anstatt - wie normal - das dem Designer zu ueberlassen. Der Designer kann diese Form von Initializiserungscode nicht selbstaendig generieren. Aus dem Grund sieht es so aus, dass der Designer Code "verschlucken" wuerde, sollte man das Chart-Control aus dem GitHub Repo zur Entwurfszeit verwenden. Das ist aber nicht der Fall. Die Wahrheit ist, dass der Designer des Chart-Controls keinen Code generiert, da der Designer schlicht weg fehlt. Symptomatisch kommt das natuerlich aufs gleiche raus.

    Man kann also das Chart-Control also schon in .NET verwenden, sollte aber alle notwendigen Aspekte ausschliesslich selbst per Code initializieren. Also am besten hinter dem InitializeComponent Aufruf im Konstruktur des Forms eine weitere Methode einfuegen, die dann das Chart-Control so initialisiert, wie es der Designer auch machen wuerde. Ist ein wenig mehr Aufwand, funktioniert aber.

    Hope that helps!

    Gruss

    Klaus

    PS: Krisan ist ein freier WinForms Kontributer und arbeitet an den Chart-Designern - die sind fuer den .NET Out-Of-Process Designer schon was aufwaendiger, kann also noch ein wenig dauern.