Fragensteller
VS2017: Alle Grafiken und Menüleisten verschwunden

Frage
-
Verflixt, es ist zum Aus-der-Haut-fahren. Wieder einmal sind die Grafiken und Mneüleisten verschwunden. Die Ressourcendatei ist in Ordnung, aber diesmal sind die Grafiken auch im Designer weg - keine Einträge dazu vorhanden. Die Menüleisten-Einträge sind noch da, auch die Items, nur das Menu.Items.Add() ist weg.
Da legt VS nun jede Menge Dateien an - aber kein Backup - bzw. wenn es das doch tut, zerstört es das auch. Gibt's denn irgendeine Möglichkeit, alles wieder herzustellen - ich meine außer alles zu löschen und die (hier leider nicht vorhandene) aktuelle Kopie zu verwenden?
Die Wiederherstellung dürfte etwas dauern: Im Designer etwa 30-40 Links zu den Items wieder einfügen, und die etwa 100 Grafiken im Entwurf wieder 'reinbasteln.
Ach seufz! So heftig war's bisher noch nicht. Allerdings bin - ähm: war! - ich auch kurz vor der Fertigstellung.
Eine Fehlermeldung kam nicht, aber die Teile sind ja auch aus dem Code 'raus.
Hat jemand 'ne Idee? Danke schon mal im Voraus.
heute mal ohne Signatur...
Alle Antworten
-
Hi,
Was heißt "verschwunden"? Sind die vom Designer erzeugten Befehle in der Designer-Datei gelöscht? Oder gibt es vielmehr einen Fehler, der den Designer nicht weiterarbeiten lässt? Wenn Zweites, was bringt dann ein Debug der Visual Studio Instanz, insbesondere ein Debug der InitializeComponents?--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und Tricks -
Hi,
Backups sind selbstverständlich und schon immer Sache des Benutzers. Wenn Du keines erstellt hast, musst Du dir selbst die Schuld geben, dass Du jetzt viel Arbeit hast.
Am einfachsten geht das über eine Versionsverwaltung wie SVN, GIT, ...
---
Zu deinem Problem: Ich hab nicht so wirklich verstanden, was genau da nicht funktioniert? Hast Du eine WinForms Anwendung, dort Menüleisten, Grafiken, ... hinzugefügt und die sind nun plötzlich alle weg?
Falls ja: Was hat "Menu.Items.Add()" damit zu tun? Solltest Du diesen oder andere Befehl(e) manuell in der .designer.cs hinzugefügt haben, ist es kein Wunder, dass die nicht mehr da sind. Diese Dateien werden von VS generiert und es stehen auch deutliche Hinweise in der Datei, dass man diese in großen Teilen eben nicht manuell bearbeiten soll. Dafür gibt es die normale .cs Datei des Formulars.
Beschreib daher doch bitte etwas genauer, was exakt Du wo genau gemacht hast und was nun effektiv verschwunden ist.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Danje für die Antwort.
Es liegt ersteres vor, die Befehle sind verschwunden. So sahe es vorher aus - der Soll-Zustand:
// mstrip // this.mstrip.AutoSize = false; this.mstrip.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(79)))), ((int)(((byte)(149))))); this.mstrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tsmiLeer, this.tsmi1, this.tsmiDatei, this.tsmiMin, this.tsmiBackup, this.tsmiEinstellungen, this.tsmiHilfe, this.tsmiÜber}); this.mstrip.Location = new System.Drawing.Point(3, 0); this.mstrip.Name = "mstrip"; this.mstrip.Padding = new System.Windows.Forms.Padding(8, 0, 0, 1); this.mstrip.Size = new System.Drawing.Size(1258, 34); this.mstrip.TabIndex = 0;
Alles da, und wie folgt sah es plötzlich aus, als ich beim Öffnen des Entwurfsmodus das Fehlen der Menüelemente feststellte.
// // mstrip // this.mstrip.AutoSize = false; this.mstrip.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(79)))), ((int)(((byte)(149))))); this.mstrip.Location = new System.Drawing.Point(3, 0); this.mstrip.Name = "mstrip"; this.mstrip.Padding = new System.Windows.Forms.Padding(8, 0, 0, 1); this.mstrip.Size = new System.Drawing.Size(1258, 34); this.mstrip.TabIndex = 0;
Ich hatte die Elemente wieder eingefügt, beim Kompilieren wurde auch alles korrekt angezeigt, als ich aber wieder den Entwurfsmodus startete, war wieder alles verschwunden.
Genauso lief es bei den Grafiken. Ich habe dann das gesamte Projektverzeichnis kopiert, dort wieder alle Elemente und Grafiken eingesetzt ... Das scheint jetzt zu laufen. Peter, Du erinnerst Dich vielleicht, dass ich mit Panels und eingefügten, aber nicht angezeigten Controls ein ähnliches Problem hatte.
Kurz zuvor hatte VS gemeldet, dass es eine Grafik nicht finden/laden könne, die aber war gar nicht in Benutzung, ich hatte sie aus dem Ressourcen.resx und dem Code entfernt, sie blieb jedoch im Projektexplorer als "fehlend" vermerkt. Ich habe all diese Einträge gelöscht, jetzt scheint es wieder zu funktionieren. Ich habe dennoch eine Kopie des Verzeichnisses angelegt - die funktioniert nun auch tadellos.
Ich kann also erstmal Entwarnung geben und verspreche, in Zukunft stündliche Kopien anzufertigen - besonders, wenn ich viele Elemente hinzufüge, wie gestern geschehen.
Danke für Deine Hilfe.
heute mal ohne Signatur...
-
Hi,
dass Befehle in dem von mir erstellten Code verschwinden, habe ich bisher nur erlebt, wenn das Visual Studio abrupt beendet wurde (System Neustart ohne Sichern) und dann beim Neustart die Wiederherstellung übersprungen wurde.Wenn es sich jedoch um Code in der Designer-Datei handelt, dann kann es bei der Arbeit mit dem Designer passieren, dass Programmzeilen im Designer-File neu sortiert und ggf. auch gelöscht werden, wenn der Designer der Meinung ist, dass sie nicht mehr zutreffen. So etwas passiert insbesondere schnell dann, wenn man im Designer-File selbst Veränderungen vornimmt. Ob Du das gemacht hast, hast Du leider nicht geschrieben.
--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und Tricks -
Hallo Stefan,
mir ist bekannt, dass man am Designer nicht rumerkeln soll. Nur - was bleibt mir anderes übrig?
Die Menüelemente per Code beu eintragen führ auch zu Problmen, da die alten, nicht verknüpften (ge"addeten") Elemente im Code verbleiben. Das wird beim Anlegen eines neuen Items klar, wenn das den gleichen Namen hat. Es werden - siehe Code oben - nur die Zeilenthis.mstrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {...});
gelöscht - warum auch immer.
Ähnlich ist's bei den Grafiken: Sie sind üblicherweise eingetragen mit
this.tsmiTextfeld.Image = global::form_re.Properties.Resources.text20x13h;
und wurden - warum auch immer - ersetzt mit
this.tsmiText.Image = ((System.Drawing.Image)(resources.GetObject("tsmiText.Image")));
was ganz offensichtlich zu Problemen führt: VS findet sie auf diesem Wege nicht. Ich hatte das gleiche Problem schon mit VS2013, bei dem keine Reparatur funktionierte, weswegen ich auf VS2017 aktualiisert habe.
Fünfzig Grafiken wieder hinzufügen dauert eben ein Weilchen, die andere Hälfte werden ja via Programmcode in der Form1.cs geschaltet und das funktioniert auch. Sie werden nur beim Start des Programms nicht angezeigt/eingebunden.
So einiges muss ich mit Garfiken lösen, damit es anständig aussieht - ich da vielleicht etwas arg pingelig.
Interessanterweise trat der Fehler auch nur in der Form1 auf, die SubForms, Unterfenster, blieben von dem Malheur verschont.
Tja, das Backup! Von Office und vielen anderen Programmen bin ich's gewohnt, das Backups automatisch angelegt werden. Nur hier eben nicht, und ich hatte gestern vieles geändert.
Ich werd's mir merken, hatte nur gehofft, es gebe eine Möglichkeit mir ide Arbeit zu ersparen, alles neu zu machen. Mit der Versionsverwaltung habe ich bisher nicht gearbeitet, weil mir vieles darin unverständlich ist. Ich werde mich da wohl mal 'reinarbeiten müssen.
Auch Dir Danke für die Tipps und Hilfe, gehabt euch Beide - Du und Peter - wohl, viel Erfolg ...lypô
heute mal ohne Signatur...
-
Oh, ich dachte, das ginge aus meine Aussage hervor: Klar habe ich die "...Items.AddRange()"- Zeile manuell im Designer eingefügt, da die einzufügenden Items - also deren Code - noch vorhanden waren ... einige wenige sogar mit Grafik.
Einen Absturz des Rechners hatte ich nicht, gespeichert war alles, der Computer wurde nicht ausgeschaltet - das Problem trat ganz plötzlich und überraschend auf. Ein Hinweis oder eine Aufforderung zur Wiederherstellung traten nicht auf. Plötzlich und mittendrin waren die Grafiken weg, als ich in den Entwurfsmodus schaltete. Es bleibt mir auch unklar, warum VS meinen sollte, diese Elemente würden nicht gebraucht oder könnten nicht gehandelt werden/träfen nicht mehr zu. War doch alles klar und funktionierte gut.
In solchen Fällen sehe ich gar keine Alternativen zum Redigieren des Designers. Mit Grafik-neu-anlegen klappts ja auch oft nicht, so wie hier gehabt.
Ich habe jetzt mal eine Liste der Fehler zusammengestellt. Meiner Ansicht nach läuft VS2017 weniger stabil als VS2013, veilleicht ist aber auch nur bei der Installation was schief gelaufen ohne das es jemand merkte - weder das System noch ich. Diese Liste muss ich noch in verständliches Englisch übersetzen, dann stelle ich sie mal auf dem Developper-Portal ein.
heute mal ohne Signatur...
- Bearbeitet MoaByter Mittwoch, 24. Oktober 2018 12:16
-
Hi,
im Designer-File zu ändern ist wie ein Loch in den Rupf des Schiffes bohren, mit dem man über den Ozean schwimmt. Davon sollte man IMMER die Finger lassen, wenn man stabile Anwendungen haben will.--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und Tricks -
Dann bleibt also nur noch, das Projekt komplett zu löschen und neu aufzubauen - das ist keine Alterantive, dauert viel zu lange. Ich arbeite sehr viel am grafischen Entwurf, der ist sehr ausgeklügelt, da ich hohe Ansprüche an das Erscheinungsbild habe.
Ich arbeite üblicherweise mit dem Designer gar nicht. Nur in solchen Fällen seteh ich vor der Wahl: nochmals 'ne Woche 'ranhängen und alle grafischen Elemente neu erstellen oder Designer bearbeiten.
Danke für Deine Hilfe, gehabe Dich wohl, viel Erfolg ...lypô
heute mal ohne Signatur...
- Bearbeitet MoaByter Mittwoch, 24. Oktober 2018 12:26
-
Hi,
wenn Du nicht mit dem Designer arbeitest, dann bleibt das Designer-File auch ganz einfach. Das Designer-File beinhaltet auch nur Code und Deklarationen, die dann in der partiellen Klasse in Deinem Code genutzt werden können. Wenn Du den Designer nicht benutzt, dann musst Du selbst programmieren. Und ich vermute, dass Du in der Designer-Datei selbst programmierten Code eingetragen hast, was tödlich sein kann, wenn Du die Designer-Ansicht im Visual Studio aufrufst, da im Hintergrund dann der Designer den aus seiner Sicht eigenen Code korrigiert.mir ist bekannt, dass man am Designer nicht rumerkeln soll. Nur - was bleibt mir anderes übrig?
Wenn Du in der Designer-Ansicht die Wirkung von eigenen Code sehen willst, Dann solltest Du diesen Code kapseln, z.B. in CustomControls, die dann auch in der Designer-Ansicht sichtbar werden. Wenn Du in einem CustomControl einen Fehler hast, dann ist in der Anzeige ein entsprechendes Zeichen zu sehen.
Um jetzt den vorhandenen Code schnell umzubauen, brauchst Du nur die funktionierenden Codestücken und Ressourcen in CustomControls zu verschieben und dann nach der Übersetzung diese CustomControls auf der Hauptform zu platzieren. Auch, wenn es mehrere Hundert Bilder bzw. Oberflächenelemente sind, dauert dieser Vorgang nur wenige Stunden ist nach einem Tag vergessen.
--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und Tricks -
Ähm - nein, in den Designer habe ich keine Code geschrieben. Ich habe auch keine CustomControls drin. Sowas plaziere ich dann, wenn es sein muss, in eine eigene partielle Klasse, das habe ich schon mehrfach gemacht, hier war es nicht nötig.
An den Designer bin ich erst rangegangen, als Menüleisten und Bilder fehlten, erstens, um nachzuschauen, warum sie nicht angezeigt werden und zweitens, ob denn wenigstens die MenuItems noch vorhanden sind. Das waren sie, wie auch schon die anderen Male, denn das Fehlen der Menü- und Statusleiste hatte ich schon mehrmals - immer wieder unerklärlich von hier auf jetzt entscheidet VS, dass ich die nicht mehr brauche.
Ich habe mit dem Designer nichts zu tun - solange alles korrekt läuft. Und wenn nicht, kann ich mit Änderungen auch nichts mehr zerstören, das Projekt muss alternativ eh neu aufgesetzt werden.
Was ist da los? Und warum war's diesmal so viel schlimmer? Die Bilder habe ich allesamt über den Entwurfsmodus eingebracht und da wird in den Designer geschrieben, ich tu's nicht. Auch die Reparatur ist nicht ganz ohne, denn alles, was man im normalen Code weglassen kann, muss im Designer mitgeschrieben werden: Er verwendet ja auch keine usings.
Ich vermute eher, dass der Fehler in irgendeiner Projektdatei liegt. Nur sehen alle, die ich mir ansehen kann, ziemlich unschuldig aus.
Ich warte jetzt einfach mal ab und werde brav & artig viel, viel häufiger Backups machen.
Danke für Deine Hilfe, gehabe Dich wohl, viel Erfolg ...lypô
heute mal ohne Signatur...