Reflections - wie richtig nutzen ?



  • Ich habe mal ein wenig mit den Ressourcen herumgespielt:

    namespace DLLpanelklasse {
    
    	public ref class BASISpanel : public System::Windows::Forms::UserControl
    	{	
    	public:
    		BASISpanel(void)
    		{
    			InitializeComponent();			
    		}				
    
    	protected:
    
    		~BASISpanel()
    ...
    ...
    ...
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Erforderliche Methode für die Designerunterstützung.
    		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    		this->components = (gcnew System::ComponentModel::Container());
    		System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(BASISpanel::typeid));
    		this->überschriftlabel = (gcnew System::Windows::Forms::Label());
    ...
    
    namespace Sidebar
    	{	
    
    	public ref class panel : public DLLpanelklasse::BASISpanel 
    	{	
    
    	public: void InitializePanel ();
    
    	public:	panel()
    		{
    
    			InitializeComponent();	
    			InitializePanel ();	
    			InitCallPlugIn (this);
    		}	
    
    	protected:
    
    		~panel()
    		{
    			if (components)
    ...
    ...
    #pragma region Windows Form Designer generated code
    
    		void InitializeComponent(void)
    		{		
    		System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(BASISpanel::typeid));
    		this->SuspendLayout();
    		// 
    		// panel
    		// 
    		resources->ApplyResources(this, L"$this");
    		this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    

    Das bearbeiten des BASISpanels ist somit nun endlich möglich. Elemente können hinzugefügt werden usw. und sind im PlugIn endlich angekommen. Das blöde ist nun, dass es beim bearbeiten des eigentlichen PlugIns - Im Designer - weiterhin schwierigkeiten gibt.

    Füge ich hier nun neue Elemente ein wird ...

    1. Der RessourceManager wieder auf

    System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(panel::typeid));
    

    zurückgesetzt ...

    2. Haben die neu hinzugefügten Steuerelemente (des eigentlichen Plugs) stets die Loc 0;0 - und überlagern sich hiermit. Selbst ein Sperren via Locked zieht hier nicht.

    Ich habe mir als unwissender nun überlegt, ob es wohl irgendwie möglich sei, einen einheitlichen RessourceManager zu erstellen - welche beide nutzen. Wäre das sinnvoll, bzw überhaupt Möglich?

    Andererseits gehe ich davon aus - dass die Sache mit den ressourcen damit eigentlich aus der Welt sein müsste, da die Steuerelemente ja vorhanden sind - nur eben nicht an der richtigen Position.

    Vielleicht hat von euch noch jemand ne Idee?



  • Dies passiert übrigens bei allen Bildern der PictureBoxes, sowie bei bspw. ImageLists. Auch wenn ich diese Controls in die BasisKlasse verlege - liegt der selbe Fehler vor.



  • Wenn hier keiner mehr Ideen hat ... kann der Thread geschlossen werden. Trotzdem ein riesen Danke.



  • shaun1981 schrieb:

    2. Haben die neu hinzugefügten Steuerelemente (des eigentlichen Plugs) stets die Loc 0;0 - und überlagern sich hiermit. Selbst ein Sperren via Locked zieht hier nicht.

    ja klar ... woher soll das panel auch wissen in welche Position es soll ... musst Du beim hinzufügen immer einmal ausrechen ... wenn alle Panels die gleiche Höhe haben, dann

    pluginpanel->Location = gcnew Size(0, pluginplane->Controls->Length); // oder so ähnlich
    

    Ich habe mir als unwissender nun überlegt, ob es wohl irgendwie möglich sei, einen einheitlichen RessourceManager zu erstellen - welche beide nutzen. Wäre das sinnvoll, bzw überhaupt Möglich?

    ich mache nicht sehr viel mit eingebetteten Resourcen ... aber Möglich denke ich schon ... wenn die in einer extra DLL sind (können auch mit in die fürs Interface mit rein) - dann sollten beide darafu zugreifen können



  • Das werde ich mal versuchen. Das Ding mit dem Interface klappt nun ja einwandfrei. Die Panels sind zu 90% auch schon umgeschrieben. Nur ne Sidebar ohne Bildchen ist ja irgendwie langweilig. Werde mich mal damit beschäftigen ...

    Melde mich wieder ...



  • Wenn du eine eigenes UserSteuerelement erstellst und designst und in panel-Form nur das einfürgst, kann dort doch der Code mit gcnew ComponentResourceManager(BASISpanel::typeid) stehen belieben, oder?

    Edit: umgeschreiebn.



  • Ich weiß nicht ob ich deine Frage richtig verstehe, aber soweit ich das beurteilen kann - kann ich nun ohne Probleme im Designer arbeiten und Controls hinzufügen. Eben nur mit den Images u. Co. gibt es die ja bekannten Probleme.

    Alles andere läuft wie gewohnt.



  • Rhombicosidodecahedron schrieb:

    Wenn du eine eigenes UserSteuerelement erstellst und designst und in panel-Form nur das einfürgst, kann dort doch der Code mit gcnew ComponentResourceManager(BASISpanel::typeid) stehen belieben, oder?

    Edit: umgeschreiebn.

    Eigentlich habe ich den Grund für die Fehlermeldungen noch nicht wirklich verstanden. Ich glaube, dass das PlugIn Panel die Ressourcen in den Ressourcen des BasisPanels sucht. Stimmt das so? Aber warum kann ich dann nicht einmal eine ImageList erstellen - auch ohne Bilder nicht ?

    In deinem Beispiel meinst du ein eigenes UserControl - oder was meinst du mit UserSteuerelement? Die Panel Form ist immer noch von der DLL Basis Panel abgeleitet, welche die Haupt Funktionen beinhaltet - sowie Menüs etc.

    Mein Rechner liegt leider grade lahm - muss mich noch was gedulden. Nur Vista weiß wie lang noch ... 🙂



  • shaun1981 schrieb:

    Stimmt das so? Aber warum kann ich dann nicht einmal eine ImageList erstellen - auch ohne Bilder nicht ?

    Weil ComponenResourceManager nur in der aufrufenden Assembly nach einer Resource names "DLLpanelklasse.BASISpanel.resources" sucht. Dies wird er wohl in den Plugins nicht finden.



  • So ... die Sache scheint nun zu klappen - wenn ich die Bilder zum Projekt hinzufüge, und unter Projekteigenschaften - Linker - Eingabe - Verwaltete Ressourcen einbetten - die Datei angebe (inklusive Pfad).



  • shaun1981 schrieb:

    So ... die Sache scheint nun zu klappen - wenn ich die Bilder zum Projekt hinzufüge, und unter Projekteigenschaften - Linker - Eingabe - Verwaltete Ressourcen einbetten - die Datei angebe (inklusive Pfad).

    Ja, dann lass es jetzt auch mal langsam gut sein...Das geht ja schon fast 5 Wochen hier mit dem Thema...

    Nach 5 Wochen darf diese Thema nicht mehr gewählt werden und wird aus der Top Ten List gestrichen...



  • Wo genau liegt das Problem ?



  • shaun1981 schrieb:

    Wo genau liegt das Problem ?

    Du weist doch - mein Troll & so



  • Ich glaub ich steh aufm Schlauch.


Anmelden zum Antworten