Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Mögliche Datenverluste weil Variable nicht deklariert oder zugeordnet
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

Mögliche Datenverluste weil Variable nicht deklariert oder zugeordnet

beantworten | zitieren | melden

Ich habe ein Task Pane für Outlook erstellt welches 4 customListBox-Elemente (eigene Klasse, erbt von ListBox) beinhaltet. Bevor ich die Klasse erstellt hatte, beinhaltete das Task Pane 4 standard Task Panes die den selben Namen hatten wie die neuen customListBox-Elemente. Als ich die alten ListBoxen entfernen und durch die neuen ersetzen wollte habe ich manuell etwas in DetailsPane.Designer.cs geändert. Nun bekomme ich ab und zu beim Ausführen meines Programms die Fehlermeldung "Um mögliche Datenverluste zu verhindern, müssen vor dem Laden des Designers folgende Fehler behoben werden:" und darunter 4 Einträge zu den CustomListBox-Elementen mit der Meldung: " die variable listBox1" wurde nicht deklariert oder nicht zugeordnet.". Manchmal steht auch die Zeilennummer dabei in der der Fehler auftreten soll, diese beinhaltet je nach ausgewählter Fehlermeldung "this.Controls.Add(this.listBox1);". Der Fehler tritt wie bereits gesagt nicht immer auf und die Zeilennummer steht auch nicht immer dabei (im anderen Fall Zeile 0, Zeichen 0). Kann mir bei dem Problem jemand helfen ?
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Hallo tyarr,

ersteinmal solltest Du deine Beiträge ein wenig anders Formatieren.. Hin und wieder ein Enter an der richtigen Stelle erhöht die Lesbarkeit enorm.

Als zweites solltest Du die Designer.cs am besten nie anpacken. Wenn das doch mal passiert, und dein Anwendungsfall ist einer der wenigen wo ich das gut heisse, solltest Du den Designer vorher schliessen damit er neu laden kann und sich nichts "zwischenspeichert".
Zur Not das Studio einmal neu starten.

Gruß
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Hallo unconnected,

okay werde ich.

Ja, das habe ich mittlerweile schon öfters gelesen. Habe auch VS schon oft neu gestartet aber es ändert sich nichts am Fehler. Hast du sonst noch irgendwelche Ideen ?
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Hallo,

könnte mir höchstens vorstellen das in der .suo Datei noch was Designer spezifisches abgespeichert wird.

Has Du wirklich nur die Klassen ausgetauscht?
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Hallo,

würde dann aber nicht immer der Fehler auftreten beim Laden?

Ich glaube ja, es ist schon ein paar Tage her.
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Ich habe gerade herausgefunden, dass ich den Fehler reproduzieren kann, wenn ich die Projektmappe neu erstelle. Wenn ich anschließend den designer schließe und neu öffne, kann ich die Form allerdings wieder sehen.
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

beantworten | zitieren | melden

Was immer du da in der Designer Datei geändert hast war offensichtlich nicht richtig.
Die Meldung die dir präsentiert wird kommt dadurch weil eine Exception ausgelöst wurde während der VS Designer die Einstellungen serialisiert und verarbeitet hat. (Vereinfacht gesagt während er die InitializeComponent() Methode abgearbeitet hat)

Was auch immer du da an Code in der Designer Datei geändert hast, er löst auf jeden Fall eine Exception aus und das scheinbar genau 4x.

Du siehst die Meldung nur beim ersten öffnen weil der Designer so schlau ist die Designer Form nur einmal zu erstellen, diese erstellte Instanz wird bei einem neuerlichen kompilieren allerdings immer verworfen. Daher siehst siehst du den Fehler nach jedem kompilieren immer nur genau 1x und beim nächsten öffnen/zum Tab wechseln kriegst du halt das was der Designer trotz Fehler daraus machen konnte.

Wenn es noch irgendwie geht dann mach deine Änderungen an der Designer Datei rückgängig und hör auf am Designer Code rumzufummeln. Du kannst im ctor deiner Pane nach dem InitializeComponent() doch die Dinge noch immer noch nach deinen Wünschen regeln. Und wenn du glaubst das dass nicht geht, auf myCSharp.de gerne nachfragen.

(Optional kannst du noch deinen InitializeComponent Code posten aber ohne Garantie. Meterlangen Code zu diagnostizieren ist nicht so unbedingt eine Community Aufgabe)
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Ich kann die Änderungen leider nicht mehr rückgängig machen. Ich hatte gedacht wenn ich es da direkt ändere geht das schneller..
Hier möglicherweise relevante Teile von InitializeComponent:

private void InitializeComponent()
{
  this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
  this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
  this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
  this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
  this.listBoxTasks = new PluginTest.CustomListBox();
  this.listBoxEvents = new PluginTest.CustomListBox();
  this.listBoxContactComments = new PluginTest.CustomListBox();
  this.listBoxCompanyComments = new PluginTest.CustomListBox();
  this.SuspendLayout();

//
// listBoxTasks
//
  this.listBoxTasks.BorderStyle = System.Windows.Forms.BorderStyle.None;
  this.listBoxTasks.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
  this.listBoxTasks.FormattingEnabled = true;
  this.listBoxTasks.ItemHeight = 66;
  this.listBoxTasks.Location = new System.Drawing.Point(18, 223);
  this.listBoxTasks.Name = "listBoxTasks";
  this.listBoxTasks.Size = new System.Drawing.Size(338, 70);
  this.listBoxTasks.TabIndex = 36;
  this.listBoxTasks.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.CustomListBox_DrawItem);
  this.listBoxTasks.SelectedIndexChanged += new System.EventHandler(this.listBoxTasks_SelectedIndexChanged);
// 
// listBoxEvents
// 
  this.listBoxEvents.BorderStyle = System.Windows.Forms.BorderStyle.None;
  this.listBoxEvents.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
  this.listBoxEvents.FormattingEnabled = true;
  this.listBoxEvents.ItemHeight = 66;
  this.listBoxEvents.Location = new System.Drawing.Point(18, 320);
  this.listBoxEvents.Name = "listBoxEvents";
  this.listBoxEvents.Size = new System.Drawing.Size(338, 70);
  this.listBoxEvents.TabIndex = 37;
  this.listBoxEvents.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.CustomListBox_DrawItem);
  this.listBoxEvents.SelectedIndexChanged += new System.EventHandler(this.listBoxEvents_SelectedIndexChanged);
// 
// listBoxContactComments
// 
  this.listBoxContactComments.BorderStyle = System.Windows.Forms.BorderStyle.None;
  this.listBoxContactComments.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
  this.listBoxContactComments.FormattingEnabled = true;
  this.listBoxContactComments.ItemHeight = 66;
  this.listBoxContactComments.Location = new System.Drawing.Point(18, 415);
  this.listBoxContactComments.Name = "listBoxContactComments";
  this.listBoxContactComments.Size = new System.Drawing.Size(338, 70);
  this.listBoxContactComments.TabIndex = 38;
  this.listBoxContactComments.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.CustomListBox_DrawItem);
   this.listBoxContactComments.SelectedIndexChanged += new System.EventHandler(this.listBoxContactComments_SelectedIndexChanged);
// 
// listBoxCompanyComments
// 
  this.listBoxCompanyComments.BorderStyle = System.Windows.Forms.BorderStyle.None;
  this.listBoxCompanyComments.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
  this.listBoxCompanyComments.FormattingEnabled = true;
  this.listBoxCompanyComments.ItemHeight = 66;
  this.listBoxCompanyComments.Location = new System.Drawing.Point(18, 515);
  this.listBoxCompanyComments.Name = "listBoxCompanyComments";
  this.listBoxCompanyComments.Size = new System.Drawing.Size(335, 70);
  this.listBoxCompanyComments.TabIndex = 39;
  this.listBoxCompanyComments.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.CustomListBox_DrawItem);
  this.listBoxCompanyComments.SelectedIndexChanged += new System.EventHandler(this.listBoxCompanyComments_SelectedIndexChanged);
// In den nächsten 4 Zeilen wird mir immer der Fehler angezeigt
  this.Controls.Add(this.listBoxCompanyComments);
  this.Controls.Add(this.listBoxContactComments);
  this.Controls.Add(this.listBoxEvents);
  this.Controls.Add(this.listBoxTasks);
  this.ResumeLayout(false);
  this.PerformLayout();
}

Nachtrag:
Mir ist gerade aufgefallen, dass für alle Komponenten ein

((System.ComponentModel.ISupportInitialize)(this.komponente)).BeginInit(); 
vorhanden ist, ausser für die listBoxen, kann es damit was zu tun haben ?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von tyarr am .
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4318
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Wie sind die Variablen definiert in der Designer-Datei ?
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Nach #endregion (anfang ist #region Vom Komponenten-Designer generierter Code)

private PluginTest.CustomListBox listBoxTasks;
private PluginTest.CustomListBox listBoxEvents;
private PluginTest.CustomListBox listBoxContactComments;
private PluginTest.CustomListBox listBoxCompanyComments;
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4318
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Wenn der Designer offen ist und alles angezeigt wird.
Dann zieh einen Button auf das Form.
Speichern
Button entfernen
Speichern
Alle Fenster schliessen
Solution bereinigen
VS schliessen
VS öffnen
Neu kompilieren
VS schliessen

So was hilft bei mir meistens (es erzwingt, dass der DesignerCode von VS neu geschrieben wird)... und die Bereinigung löscht ungültigen Schrott in Obj.
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

hat leider nicht geholfen. nach erneutem erstellen erscheint der fehler wieder.
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4318
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Lade mal einen PrintScreen rauf
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Im Anhang der screenshot
Attachments
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4318
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Mach mal das hier:

UserControl kann im Designer nicht hinzugefügt werden
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Zitat von Programmierhans
Mach mal das hier:

UserControl kann im Designer nicht hinzugefügt werden

Wie öffne ich denn das .dll Projekt?
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Habe mal

private PluginTest.CustomListBox listBoxTasks;
private PluginTest.CustomListBox listBoxEvents;
private PluginTest.CustomListBox listBoxContactComments;
private PluginTest.CustomListBox listBoxCompanyComments;
auskommentiert, und debugging gestartet. Da kommt ein anderer Fehler, siehe Anhang.
Attachments
private Nachricht | Beiträge des Benutzers
Jamikus
myCSharp.de - Member



Dabei seit:
Beiträge: 251
Herkunft: Oberhausen (NRW)

beantworten | zitieren | melden

Wenn die Zeilen
Zitat

private PluginTest.CustomListBox listBoxTasks;
private PluginTest.CustomListBox listBoxEvents;
private PluginTest.CustomListBox listBoxContactComments;
private PluginTest.CustomListBox listBoxCompanyComments;  

aus kommentiert sind.

Dann müssen auch alle weitere Zeilen aus kommentiert werden, die sich auf diese Objekte beziehen.
Die Zeilen enthielten die Deklaration der Objekte.

Ich würde dir eher raten das Projekt neu aufzusetzen und diesmal nichts im Designer manuell zu ändern.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Jamikus am .
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Habe das Problem gelöst. Bei
Zitat
private PluginTest.CustomListBox listBoxTasks;
private PluginTest.CustomListBox listBoxEvents;
private PluginTest.CustomListBox listBoxContactComments;
private PluginTest.CustomListBox listBoxCompanyComments;

habe ich den Namespace vor CustomListBox entfernt, jetzt tritt der Fehler nicht mehr auf.
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10083

beantworten | zitieren | melden

Den wird dir der Designer aber wieder einbauen.

Das bedeutet aber das du etwas unsauber bei deinen namespaces warst.
Es gibt wahrscheinlich auch noch einebn Namespave xyz.PluginTest
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Zitat von FZelle
Den wird dir der Designer aber wieder einbauen.

Das bedeutet aber das du etwas unsauber bei deinen namespaces warst.
Es gibt wahrscheinlich auch noch einebn Namespave xyz.PluginTest

Trotz mehrmaligem kompilieren, neu erstellen und bereinigen hat er nichts wieder eingebaut und den fehler habe ich auch nicht mehr zu gesicht bekommen.

Inwiefern unsauber?
Nein gibt es nicht.
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10083

beantworten | zitieren | melden

Sobald du irgendwas an der Form im Designer machst, wird er dir alle Controls "neu" in den Code einschreiben.
Und dann wird da wieder der volle Namespace stehen.

Unsauber bedeutet,das man manchmal einen Namespace hat, der schon in einem anderen vorhanden ist ( beliebt das man den default namespace nicht beachtet der in den einstellungen steht).
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

beantworten | zitieren | melden

[offtopic] Okay Thema beendet, aber für mich sieht es eher so als hat der ctor deiner PluginTest.CustomListBox eine Exception ausgelöst was er jetzt nicht mehr tut. (Oder aber ein abhängiges Assembly wurde tatsächlich nicht gefunden. An die Namespace Story glaube ich jedenfalls auch nicht. [/offtopic]
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4318
Herkunft: Zentralschweiz

beantworten | zitieren | melden

@Sebastian.Lange

Sehe ich auch so... deshalb auch mein Vorschlag zu Debuggen was im Designer abgeht... aber dem wollte er ja nicht folgen...

Ich klinke mich hier auch aus.
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Zitat von Programmierhans
@Sebastian.Lange

Sehe ich auch so... deshalb auch mein Vorschlag zu Debuggen was im Designer abgeht... aber dem wollte er ja nicht folgen...

Ich klinke mich hier auch aus.

Ich wollte schon, ich wusste nur nicht wie das geht.
private Nachricht | Beiträge des Benutzers
pinki
myCSharp.de - Member

Avatar #avatar-4072.jpg


Dabei seit:
Beiträge: 703
Herkunft: OWL

beantworten | zitieren | melden

Zitat von tyarr
Ich wollte schon, ich wusste nur nicht wie das geht.

Visual Studio Designer debuggen
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Uuuuund das Problem ist wieder da. Habe mittlerweile herausgefunden dass es an der Klasse liegt, vermutlich wie Sebastian.Lange gemeint hat am Konstruktor. Ich habe die Klasse von codeproject, vielleicht kann sich jemand das Projekt mal anschauen.
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Uuuuund das Problem ist wieder da. Habe mittlerweile herausgefunden dass es an der Klasse liegt, vermutlich wie Sebastian.Lange gemeint hat am Konstruktor. Ich habe die Klasse von codeproject, vielleicht kann sich jemand das Projekt mal anschauen.
private Nachricht | Beiträge des Benutzers
Jamikus
myCSharp.de - Member



Dabei seit:
Beiträge: 251
Herkunft: Oberhausen (NRW)

beantworten | zitieren | melden

Was wurde denn genau an der Klasse festgestellt?
Wie sieht der Konstruktor aus?

Ich weiß nichts, ob es was bringt sich das Projekt anzuschauen, weil es auf den ersten Blick eine relative gute Bewertung hat.
Somit könnte dein Problem evtl. sein, dass du das Wissen, welches dort schlummert, nicht so einsetzt, wie es der Autor beabsichtigt hat.
private Nachricht | Beiträge des Benutzers
tyarr
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Wenn ich den Konstruktor ohne Argumente benutze

public CustomListBox()
        {
            
            InitializeComponent();
            _imageSize = new Size(80, 60);
            this.ItemHeight = _imageSize.Height + this.Margin.Vertical;
            _fmt = new StringFormat();
            _fmt.Alignment = StringAlignment.Near;
            _fmt.LineAlignment = StringAlignment.Near;
            _titleFont = new Font(this.Font, FontStyle.Bold);
            _detailsFont = new Font(this.Font, FontStyle.Regular);
        }

tritt der Fehler auf, weil ich dafür den standard Konstruktor auskommentieren/entfernen muss.
Wenn ich den standard Konstruktor

public CustomListBox(IContainer container)
        {
            container.Add(this);

            InitializeComponent();
        }
benutze, krieg ich nur den Klassennamen als Item angezeigt.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von tyarr am .
private Nachricht | Beiträge des Benutzers