Laden...

Resource zur Laufzeit laden...

Erstellt von rock4k vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.579 Views
R
rock4k Themenstarter:in
39 Beiträge seit 2008
vor 15 Jahren
Resource zur Laufzeit laden...

Hallo,

habe folgendes Problem, ich möchte zur Laufzeit die Bilder auf einigen Toolbar-Buttons tauschen. Die Bilder hierfür können durchaus in die Resourcen eingebunden sein.
Also müsste nur noch die entsprechende Resource angesprochen werden.

Ich habe jetzt schon alle Ansätze und Lösungen die hier zum Thema "Resourcen laden" geschrieben wurden getestet, jedoch ohne Erfolg. Suche nun seit 2 Tagen nach einer Lösung.

Es kann doch nicht so sehr aufwendig sein, eine Resource vom Typ Image einem Toolbar-Button zuzuweisen.

Vielen Dank.

Gelöschter Account
vor 15 Jahren

ein image zu laden und einm toolbarbutton zuzuweisen ist überhaupt kein problem. schau dir an wie das der designer macht.

wenn du die images aus ressourcen ziehst, dann schau dir an wie das der designer macht und bringe eine ähnliche zeile in die entsprechende zeile in deinem code ein.

R
rock4k Themenstarter:in
39 Beiträge seit 2008
vor 15 Jahren

Ja sehr einfach würde das mit folgender Zeile gehen:

item.Image = global::myControls.Properties.Resources.speichern;

".speichern" ist die entsprechende Resource. Jedoch kann man ja nicht per z.B. übergebenen Parameter an dieser Codezeile ein anderes "Wort" anhängen.

Eine andere Möglichkeit habe ich auch schon getestet. Und zwar:

 Assembly loadedAssembly = Assembly.GetExecutingAssembly();
Stream stream = loadedAssembly.GetManifestResourceStream("myControls.Resources.seitenansicht.Image.png");
Image img = null;
try { img = Image.FromStream(stream); }
catch { }
item.Image = img;
915 Beiträge seit 2006
vor 15 Jahren

ich glaube JAck30lena hatte dir zwar genau das mitteilen wollen, runzelt aber bestimmt nun mit der Stirn .-)

Du brauchst ja nicht die Pfade ändern sondern nur auf den entsprechenden Trigger zu reagieren.

Wenn Fall A :

item.Image = global::myControls.Properties.Resources.rot

Wenn Fall B

item.Image = global::myControls.Properties.Resources.blau

Die Fälle könnten z.B. über ein Event getriggert werden, wie z.B. ein Click Event.

Wenn es dir jetzt um eine Designerkomponente geht die zur Designerlaufzeit geladen und entladen wird mit dynamsichen Resourcen, dann wäre dein zweiter Ansatz der richtige - aber glaube kaum dass das gemeint hattest.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

Gelöschter Account
vor 15 Jahren

anders:

du erstellst 2 ressources in deinem projekt (myres1, myres2) im ordner Properies.
in die erstere stopst du dein anfangsbild und die letztere dein neues bild.

toolboxbild = myNamespace.Properies.myres1.myImage

und dann irgendwann zur laufzeit:

toolboxbild = myNamespace.Properies.myres2.myImage

edit:
oder genau so wie Andreas.May beschreibt^^.

R
rock4k Themenstarter:in
39 Beiträge seit 2008
vor 15 Jahren

mmhh. Gut. Da muss ich wohl doch mehr erklären.

Also, ich habe ein eigenes Toolbar-Control. Diese beinhaltet eine Methode, in der ich mit nur einer Zeile Code der Toolbar einen Button hinzufügen möchte. Mit einem Textbutton funktioniert es, jedoch nicht mit einem Bildbutton.

Die Methode bekommt Parameter übergeben, die dem Button einen Namen(id) geben, das (Resourcen)Bild angeben und ob der Button angezeigt werden soll.
Mit "global::myControls.Properties.Resources.blau" müsste ich ja die Parameter prüfen und das genau soll es ja nicht sein bzw. würde ja ausufern. Der Parameterwert selbst soll ja gleich den Namen der Resource angeben.

Also wohl eher die andere Variante, die wiederrum noch nie funktioniert hat. 😦

Gelöschter Account
vor 15 Jahren

warum übergibst du dem teil nicht das bild selbst?

915 Beiträge seit 2006
vor 15 Jahren

Du könntest alternativ dazu einfach ein Event nach aussen geben und von aussen das Bild setzen. Über den sender bei nen Standardevent wie z.b. das Klickereigniss deines dynamischen ToolbarButton gibst diesen eben als sender mit. Dein ToolbarButton sollte dann eben die Eigenschaft Image mitliefern. So kannst du von aussen das Bild setzen ohne das dein UserControl Bilder überhaupt fest integriert reinlädt. Würde dir soweiso empfehlen deine dynamsichen objekte wie das ToolBarButton Item über den Designer von aussen zu konfigurieren. Somit hast du keine Resourcen wie Bilder / Texte usw. in dem UserControl selbst 🙂

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(