Laden...

UserControl kann im Designer nicht hinzugefügt werden

Erstellt von hurricane vor 18 Jahren Letzter Beitrag vor 18 Jahren 5.431 Views
hurricane Themenstarter:in
379 Beiträge seit 2004
vor 18 Jahren
UserControl kann im Designer nicht hinzugefügt werden

Ich habe mir ein Usercontrol erstellt, in dem eine TreeView enthalten ist, die spezielle Funktionen hat.
Dieses Usercontrol habe ich in eine DLL gepackt und diese DLL habe ich meiner Anwendung hinzugefügt. Ich kann auch das Usercontrol in die ToolBar einfügen. Wenn ich jedoch das Control im Designer auf meine Form ziehe, dann passiert gar nichts. Es wird nicht angezeigt und es wird auch nichts im Code hinzugefügt.
Das selbe passiert mir auch bei 2 anderen Controls.
Ein Control wurde einmal im Designer angezeigt, nach einer kleinen Änderung jedoch, war das Control verschwunden.... Ich muss die Controly nun immer im Quellcode in die Form einbinden, was nicht gerade so toll ist.

Hat einer eine Idee, wie der Fehler zu Stande kommt und wie man ihn behen kann?

ciao Anke

4.221 Beiträge seit 2005
vor 18 Jahren

Mach folgendes:

Oeffne nur das DLL-Projekt

Dann unter den Projekteigenschaften unter Debuggen einstellen:

  • DebugModus Programm
  • Anwendung starten: Vollen Pfad auf das Devenev.exe eintragen

Nun kannst Du dein DLL Projekt laufen lassen.... es wird sich eine zweite Entwicklungsumgebung öffnen. In dieser lädst Du das UI-Projekt, machst darin einen Build. Nun kannst Du ein Form des UI-Projektes öffnen und die Controls draufwerfen (sämtliche Breakpoints in Deinem DLL sollten nun funzen).... nun kannst Du dem Fehler auf den Grund gehen..... vermutlich schmeisst ein Control einen ganz blöden Fehler.

Ev. gibts noch andere Möglichkeiten Controls im DesignModus zu debuggen... aber mir fällt keine andere ein... und bin bisher so gut gefahren.

Gruss
Programmierhans

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

4.506 Beiträge seit 2004
vor 18 Jahren

Hallo!

Ich habe das gleiche Problem, und ich glaub er will nicht DEBUGGEN, sondern im VS nur die Controls, von der DLL auf die "OwnControls" Toolsleiste bringen, um dann diese im Designer einzubinden (per Drag&Drop).

Von laufen lassen hat er meiner Meinung nach nix gesagt!

Ich sag hier auch nur, dass ich das auch nicht hinbekommen hab, und es so gelöst hab, wie hurricane beschrieben, und rein im Code implementiert hab 😦

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

hurricane Themenstarter:in
379 Beiträge seit 2004
vor 18 Jahren

Ich kann das ja mal ausprobieren.

Das komisch ist ja nur, das es einmal bei dem einen Control ging. Und dann halt plötzlich nicht mehr. Ich habe jetzt ein Panel im Designer liegen. Dort füge ich mein UserControl hinzu und setzt Dock auf "Fill". Das geht natürlich auch, ist aber nicht so schön 🙁

Hier mal ein Beispiel:


// Erstellt eine GridControl.
			this.gridControlReport = new GridControl();

			// Die Werte (Size, Width, ...) des Labels werden für das GridControl kopiert.
			this.gridControlReport.Font		= this.pnlPlaceHolderControls.Font;
			this.gridControlReport.Location	= new Point(this.pnlPlaceHolderControls.Location.X, this.pnlPlaceHolderControls.Location.Y);
			this.gridControlReport.Size		= new Size(this.pnlPlaceHolderControls.Size.Width, this.pnlPlaceHolderControls.Size.Height);
			this.gridControlReport.Anchor	= this.pnlPlaceHolderControls.Anchor;
			this.gridControlReport.Dock		= this.pnlPlaceHolderControls.Dock;
			this.gridControlReport.Visible	= false;

			this.gridControlReport.Dock		= DockStyle.Fill;

			// Fügt das GridControl der Form hinzu.
			this.pnlPlaceHolderControls.Controls.Add(this.gridControlReport);

Es sollte hier ja der selbe mechanismus geschehen, wie wenn das Control im Designer hintugefügt wird. Es kommt hier aber keine Exception, also sollte das Control ja korrekt sein, oder?

hurricane Themenstarter:in
379 Beiträge seit 2004
vor 18 Jahren

@Norman-Timo

Ich bin doch aber kein "Er" X(

4.221 Beiträge seit 2005
vor 18 Jahren

Auf der Toolbox hat er das Zeugs ja schon....

Wenn Du nicht Debuggen willst... dann lass halt Deine Fehler drin.

Du brauchst auch meine Ratschläge nicht zu berücksichtigen.... ich geb zwar Tipps die funktionieren aber die Anwendung ist freiwillig..... Es ist Dir somit freigestellt auch in Zukunft auf den Designer zu verzichten wenn Dir dies lieber ist.

PS: Manchmal reichst auch wenn man den Verweis auf das DLL rausschmeisst und dann nochmal ein Control auf das Form zieht

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

4.221 Beiträge seit 2005
vor 18 Jahren

Original von hurricane

Ich bin doch aber kein "Er" X(

Cool eine Frau am Steuer eines 3.5 cm Nitro-Car's 🙂

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

4.506 Beiträge seit 2004
vor 18 Jahren

Verzeihung Programmierhans, ich bin mir nicht ganz im Klaren darüber, was der Designer mit debuggen zu tun hat, vielleicht hab ich da eine Wissenslücke!

Wird das Control denn ausgeführt, wenn ich das von der ToolBox auf die Designer-Fläche ziehe?

Falls das so ist, dann sorry, ich war der Meinung, dass Du die Frage nicht richtig verstanden hattest, und dachte ich könnte das dann präzesieren.

Wie gesagt, vielleicht hab ich deine Lösung auch nur fehlinterpretiert.

Und ich bin so jemand, der versucht nicht nur Lösungen anzuwenden, sondern sie auch zu verstehen, könntest Du daher das Ganze erklären, was da gemacht wird, bei Deiner Vorgehensweise?

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

4.506 Beiträge seit 2004
vor 18 Jahren

UUPS!

Ich bin doch aber kein "Er"

Es tut mir schrecklich leid, ich bin da ganz ehrlich, darauf hab ich mal überhaupt nicht geschaut! peinlich

Leider ist es so, dass hier zu 95% männliche Forumsmitglieder sich austoben, deshalb nochmal ein GROSSES SORRY!

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

hurricane Themenstarter:in
379 Beiträge seit 2004
vor 18 Jahren

Der Monstertruck hat aber 11 ccm 😁 ich glaube es sind sogar 11.5, weiß es gar nicht mehr so genau. Ist von Thunder Tiger 😉

Ich habe ja nicht gesagt das ich deinen Vorschlag nicht ausprobieren will, sondern nur, das es mich wundert das es klappt, wenn ich im Konstruktor der Form das Control einbinde, aber im Designer klappt es nicht. Das finde ich halt komisch, das kann ja kein Fehler am Control sein, oder?
Es kommt ja auch kein Fehler wenn ich das Control im Designer einfüge, es passiert halt einfach nur nichts 🙁

Übrigens habe ich doch so ein schönes rosanes Zeichen neben meinem Benutzernamen, ist das nicht aussagekräftig genug ?( Außerdem habe ich noch nie eine "Er" gesehen der Anke heißt lach

4.506 Beiträge seit 2004
vor 18 Jahren

Du hast gewonnen!

Ich bin schlamperig und lese Beiträge nicht mit Argusaugen, hier: leider!

Aber zurück zum Thema:

Ich habe ja nicht gesagt das ich deinen Vorschlag nicht ausprobieren will, sondern nur, das es mich wundert das es klappt, wenn ich im Konstruktor der Form das Control einbinde, aber im Designer klappt es nicht. Das finde ich halt komisch, das kann ja kein Fehler am Control sein, oder?

Ja, genau das ist das was ich Programmierhans sagen wollte, Deutsches Spraches nunmal schweres Spraches 🙂

Ich drück mich immer zu kompliziert aus.

Aber vielleicht erklärt Programmierhans das noch etwas genauer?

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

4.221 Beiträge seit 2005
vor 18 Jahren

Logisch werden die Controls ausgeführt wenn man diese auf den Designer schmeisst...... Und wenn das löschen der Referenz auf das DLL das Problem nicht löst (die Referenz wird automatisch wieder erstellt wenn das Control auf dem Form landet) hast Du schlechte Karten.... dann bleibt im Regelfall nur noch die beschriebene Variante übrig.

@hurricane

Ja so Modelle sind schon toll.... da stehen bei mir einige rum von 1:24 bis 1:6 (alle natürlich incl. Steuerung)

Ich hoffe Du hurricane hast Dich nicht angegriffen gefühlt.... war eher eine Reaktion auf norman_timo ' post....

Da mein Hauptgebiet die Entwicklung von Komponenten / Controls / Schnittstellen ist, weiss ich schon, wie man solche Probleme angehen muss.....

Gruss
Programmierhans

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

hurricane Themenstarter:in
379 Beiträge seit 2004
vor 18 Jahren

Ich habe jetzt denVerweis zu meinem GridControl unter Verweise entfernt.

Dann habe ich in der ToolBox unter "Eigene Benutzersteuerelemente" mein GridControl hinzugefügt in dem ich die entsprechende DLL ausgewählt habe. Das klappt auch einwandfrei. Wenn ich jetzt das GridControl auswähle, dann passiert einfach mal gar nichts, keine Meldung und nichts X(

Ich werde jetzt das ausprobieren, was du vorhin geschrieben hast, bis jetzt hatte ich leider keine Zeit dazu 😉

hurricane Themenstarter:in
379 Beiträge seit 2004
vor 18 Jahren

Irgendwie habe ich es jetzt hingekommen.

Ich verwende in meinem GridControl eine DLL, die ich auch in meiner Anwendung verwende. Diese habe ich jetzt als Verweis rausgenommen, dann das GridControl im Designer hinzugefügt und siehe da, es hat funktioniert!!!
Ich werde die Einstellung von DebugModus "Programm" mal wieder raus nehmen und gucken ob es immer noch geht...

4.221 Beiträge seit 2005
vor 18 Jahren

Dann hat ja sogar die einfacher Variante funktioniert..... die ander Variante ist für die Härtefälle 🙂

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

hurricane Themenstarter:in
379 Beiträge seit 2004
vor 18 Jahren

Hmm ein anderes Control, das wieder in einer DLL liegt, kann ich aber immer noch nicht hinzufügen.


Microsoft Development Environment

Eine Ausnahme ist aufgetreten, während eine Instanz von Mapping.MapControl erstellt wurde. Die Ausnahme war "Datei- oder Assemblyname 'XXX' oder eine Abhänigkeit davon wurde nicht gefunden.".

OK

Habe die Assembly jetzt mal XXX genannt. Ist die selbe Assembly die auch das GridControl verwendet und dich ich vorhin entfernt habt. Beim hinzufügen des GridControls auf die Form wurde die Assembly automatisch unter "Verweise" hinzugefügt. Wieso erkennt das MapControl dann aber die DLL nicht?
Kann so ein Fehler auch bei Versionskonflikten auftreten? Also wenn die beiden DLLs mit unterschiedlichen Versionen der XXX.dll erstellt wurden??? Das könnte nämlich sein, da dass MapControl ein Kollege programmiert hat...

4.221 Beiträge seit 2005
vor 18 Jahren

Original von hurricane
Kann so ein Fehler auch bei Versionskonflikten auftreten? Also wenn die beiden DLLs mit unterschiedlichen Versionen der XXX.dll erstellt wurden??? Das könnte nämlich sein, da dass MapControl ein Kollege programmiert hat...

Ja definitiv !!

Edit: Ergänzung

Das war übrigens vermutlich von Anfang an der Grund für die Probleme !.... das Control landet auf dem Form, kann aber mit der xx Version nix anfangen und tschüss.... (er kann seine Version nicht zu den Verweisen hinzufügen, weil es das DLL dort schon gibt... allerdings in der falschen Version)

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

hurricane Themenstarter:in
379 Beiträge seit 2004
vor 18 Jahren

Hmm, jetzt habe ich mal zuerst das MapControl und dann das GridControl hinzugefügt, beide mit dem selber Stand der XXX.dll, nun kann ich das MapControl, aber nicht das GridControl hinzufügen 🙁

Ich werde mal beide Controls in eine DLL packen und gucken ob das geht. Dazu brauche ich aber erst die neueste Version des MapControls (habe nur ne alte) um das Control mit der neuesten DLL zu kompilieren stöhn.
Da der Kollege momentan nicht da ist, wird das wohl noch ein wenig dauern ...

ciao Anke

4.221 Beiträge seit 2005
vor 18 Jahren

vorallem hast du crosslinks ?

Also UI verwendet XX
UI verwendet ControlsY und diese verwenden wieder XX

Dann wirst Du immer ein Problem haben, solange Du die xx-Version nicht im Griff hast....

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

hurricane Themenstarter:in
379 Beiträge seit 2004
vor 18 Jahren

Hmm, ja das tue ich wohl. Weiß aber auch nicht wie ich es sonst lösen könnte.

Anfangs hatten wir (also mein Kollege und ich) die UserControls direkt in der XXX.dll aber da kamen gleich ganz komische Fehlermeldungen bei raus... deswegen haben wird die Controls in extra DLLs gepackt. Ich weiß nicht mehr wie die Meldungen lauten, das müßte ich erst noch einmal wiederholen...
Ich hatte nach den Meldungen gegoogelt aber nichts gefunden 🙁

Wie würdest du es denn machen? Beide UserControls verwenden jeweils die XXX.dll ...

Diese Meldung erscheint:


Microsoft Development Environment

Das Objekt mit der ID 108 implementiert die IObjectReference-Schnittstelle, für die nicht alle Abhängigkeiten aufgelöst werden können. Mögliche Ursache sind zwei Instanzen von IObjectReference, die voneinander abhängig sind.

OK

ciao Anke

4.221 Beiträge seit 2005
vor 18 Jahren

alle die xxx verwenden müssen dieselbe version verwenden.... dann sollte es gehen

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...