Laden...

Bild einblenden/ausblenden...je nach Eigenschaftswert

Erstellt von endlezZ vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.007 Views
Thema geschlossen
E
endlezZ Themenstarter:in
4 Beiträge seit 2011
vor 12 Jahren
Bild einblenden/ausblenden...je nach Eigenschaftswert

Hallo,
was c# angeht bin ich noch nicht sehr fortgeschritten. Habe mich vorher aber mit PHP beschäftigt (aber nicht wirklich objektorientiert) 😃

Zu meinem Problem:

Ich beschäftige mich gerade mit oop und möchte das Erstellen mehrere Objekte üben:

[1] Ich habe ein Formular wo ich die Anzahl an "Mülleimern" angebe (z.B. 10). Diese werden dann in einer for-schleife erzeugt.
[2] Im nächsten Schritt möchte ich z.B. vom 5ten Mülleimer/Objekt die Farbe bzw. das Volumen anpassen. Das mache ich und es klappt auch so weit.
[3] Sobald ich nicht nur die Farbe eines beliebigen Mülleimers, sondern auch das Volumen ändere (also es größer 0 ist), möchte ich, das statt das obige MülleimerBild (siehe screenshot) das untere angezeigt wird. Ich muss hier also iwie die Souce manipulieren oder entsprechen Bild1 ausblenden und Bild2 einblenden.

[4] Im letzten Schritt kann ich mir einen beliebigen Mülleimer meines Arrays (z.B. 5) aussuchen und die Werte entsprechend ausgeben lassen.


public partial class frm_SpielwiesePalette : Form
    {

        
        public frm_MeinFormular()
        {
            InitializeComponent();              

        }
    #region Meine Objekte und Attribute
		 int i = 0;
         c_Mülleimer[] MyMülleimer;
         String volumen;
         String farbe;
         int muelleimer;
         int anzahl;
	#endregion
        private void btn_makePalette_Click(object sender, EventArgs e)
        {
            anzahl = (int)num_MuelleimerAnzahl.Value;

            MyMülleimer = new c_Mülleimer[anzahl];

            //Array Objekte instanziieren 
            for (i = 0; i < anzahl; i++)
            {
                MyMülleimer[i] = new c_Mülleimer();
            }
             
             MessageBox.Show("Es wurden " + anzahl + " Mülleimer Paletten erstellt. \nBitte wählen Sie Farbe und Volumen für die Palette ");
         
        }

        private void btn_CreateME_Click(object sender, EventArgs e)
        {
            i = (int)this.num_Einzeln.Value;

            if (MyMülleimer != null)
            {
                if (MyMülleimer[i] != null)
                {
                    MyMülleimer[i].Farbe = this.txt_FarbeEin.Text;
                    MyMülleimer[i].Volumen = Convert.ToInt32(this.txt_VolumenEin.Text);
                    MessageBox.Show("Es wurde das Volumen: " + MyMülleimer[i].Volumen + " und die Farbe: " + MyMülleimer[i].Farbe + " ausgewählt");
                }

            }
            
        }

        private void btn_MuelleimerAnzeigen_Click(object sender, EventArgs e)
        {

            i = (int)this.num_MuellEimerAuswaehlen.Value;
            txt_VolumenAus.Text = MyMülleimer[i].Volumen;
            txt_FarbeAus.Text = MyMülleimer[i].Farbe;
            
    }

Mit der Zeile


txt_VolumenAus.Text = MyMülleimer[i].Volumen;

habe ich ein kleines Problem > Fehlermeldung:

Eine implizite Konvertierung vom Typ "int" in "string" ist nicht möglich . Habe es hier schon mit einem Convert To int32 probiert, nützt aber nichts 😦

Woran kann das liegen?

Das Weiteren weiß ich absolut nicht wie ich das mit den Bildern regeln kann... Habt ihr einen Tip bzw. könnt ihr mir sagen was ich ändern muss?

Danke schonmal 😃

Gruß,
endlezZ

P
157 Beiträge seit 2010
vor 12 Jahren

habe ich ein kleines Problem "Eine implizite Konvertierung vom Typ "int" in "string" ist nicht möglich". Habe es hier schon mit einem Convert To int32 probiert, nützt aber nichts 😦

Woran kann das liegen?

ConvertToInt32 konvertiert string in int.
Um int in string zu konvertieren ist die Fonktion ToString des jeweiligen Objektes da.

E
endlezZ Themenstarter:in
4 Beiträge seit 2011
vor 12 Jahren

Hmm das eine Problem hat sich erledigt. Dachte eigentlich das hätte ich schon ohne Erfolg probiert....aber das haut hin:

txt_VolumenAus.Text = System.Convert.ToString(MyMülleimer[i].Volumen);

😃 Bleibt noch das Problem mit den Bildern. Vllt hat auch noch jemand eine Idee für ein SpecialFeature 😃

P
157 Beiträge seit 2010
vor 12 Jahren

Eine frage wie stelltst du das Bild des Mülleimers da, bzw. wie speicherst du es?

6.911 Beiträge seit 2009
vor 12 Jahren

Hallo endlezZ, willkommen im Forum,

habe ich ein kleines Problem "Eine implizite Konvertierung vom Typ "int" in "string" ist nicht möglich".

Füge ein ToString() zur Umwandlung des int zum string hinzu und es passt. Also


txt_VolumenAus.Text = MyMülleimer[i].Volumen.ToString();

Verwende für int -> string auch nicht die Convert-Methoden, sondern int.Parse od. noch besser int.TryParse.

Bitte beachte vorsorglich [Hinweis] Wie poste ich richtig? Punkt 1.1.1

Zum Mülleimer: Wie zeigst du diesen an? Per PictureBox? Dann brauchst du nur die Bildquelle ändern. Wie schaut überhaupt deine Mülleimer-Klasse aus? Zeig das noch, dann kann konstruktiver eine Lösung angegeben werden.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

E
endlezZ Themenstarter:in
4 Beiträge seit 2011
vor 12 Jahren

Hi,
erstmal Danke für die Antworten und die Unterstützung 😃

Werde mir das mit den Posting-Regeln gleich nochmal vornehmen 😃

Habe die beiden Bilder erstmal in der "benutzerfreundlichen Formularansicht" als PictureBox hinzugefügt... gäbe es da etwas noch eine andere Lösung?

Also muss ich irgendwie die src der Grafik ansprechen... Wie mache ich das? Gibt es hier auch animation wie FadeIn Effekte 😃 Naja ist aber erstmal nicht so wichtig...

P
157 Beiträge seit 2010
vor 12 Jahren

die Image Eigenschafft der PictureBox, enthält das angezeigte Bild.
Dieser musst du das neue Image zuweisen.
PictureBox-Klasse (System.Windows.Forms)

E
endlezZ Themenstarter:in
4 Beiträge seit 2011
vor 12 Jahren

Puhhh... da muss ich erstmal durchschauen...

Gehe ich richtig in der Annahme, das die Grafik nicht komplett mit dem Pfad hinterlegt ist, also "C:/bla/test/muell_leer.png"?

Kann ich einem Label auch text hinzufügen?
mit

lbl_meinlabel.Text = "Beispiel-Text"

kann ich diesen ja nur komplett ändern 😦 möchte nun aber etwas zusätzlich hinzufügen bzw. anhängen..

EDIT: mit += haut es hin, also ähnlich wie bei PHP mit .= 😃

6.911 Beiträge seit 2009
vor 12 Jahren

Hallo endlezZ,

nur als Anmerkung/Anregung: wenn du dabei bist C# zu erlernen und das an diesem Beispiel probiertst, wäre vllt. WPF passender als Windows-Forms. V.a. das mit den Bilder wäre ganz einfach per DataTrigger lösbar und auch der Pfad kann, wie du oben gezeigt hast, per String (genauer Pack-Uri) übergeben werden. Allerdings ist bei WPF die Lernkurve etwas höher als bei Windows-Forms. Generell ist zum Lernen von C# eine Konsolenanwendung sinnvoller. Siehe aber zur Sicherheit auch [FAQ] Wie finde ich den Einstieg in C#?.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo endlezZ,

in [Artikel] Zeichnen in Windows-Programmen findest du ein Beispiel, in dem Rechtecke ein und ausgeblendet werden. Das ist nicht weit weg davon, das eine oder das andere Bild einzublenden. Außerdem wird in dem Thread generell darüber gesprochen, wie man sich den aktuellen Zustand der Anzeige merkt, ändert und darstellt.

Das was du vorhast ist sicher nicht unmittelbar [Hinweis] Wie poste ich richtig? Punkt 1.1.1, die konkreten Fragen die du stellst, allerdings schon. Wir setzen voraus, dass man schon eine Vorstellung vom Aufbau einer Windows Forms Anwendung hat (dazu gehört auch, wie man die Anzeige bei Bedarf ändert), bevor man Fragen im Forum stellt. Schau mal in [FAQ] Wie finde ich den Einstieg in C#? um herauszufinden, wie du in der Phase weiterkommst, ohne Fragen im Forum zu stellen.

herbivore

Thema geschlossen