Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

GMoney597

Frischling

  • »GMoney597« ist der Autor dieses Themas

Beiträge: 48

Wohnort: Roth

Beruf: Verwaltungsfachangesteller (Stadtverwaltung), Fitness-Trainer und Muay-Thai-Trainer

  • Private Nachricht senden

1

02.11.2015, 12:42

[gelöst] C# - ComboBox und KlassenObjekte

Hallöchen zusammen,

ich komme bei diesem Problem irgendwie nicht an die richtige Lösung:
Ich möchte dass in dem txt_Output der jeweilige 'Value'-Wert angezeigt wird.
Aus irgendeinem Grund komme ich aber an das Objekt nicht ran

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Windows.Forms;

namespace Cbo_item
{    
    public class Element
    {
        public string eName { get; set; }
        public int eValue { get; set; }

        public Element(string Name, int Value)
        {
            eName = Name;
            eValue = Value;
        }
    }

    public partial class Form1 : Form
    {
        Element Alpha = new Element("Alpha", 10);
        Element Beta = new Element("Beta", 20);
        Element Gamma = new Element("Gamma", 30);
        Element Delta = new Element("Delta", 40);

        public Form1()
        {
            InitializeComponent();
            cbo_Elements.Items.Add(Alpha);
            cbo_Elements.Items.Add(Beta);
            cbo_Elements.Items.Add(Gamma);
            cbo_Elements.Items.Add(Delta);
        }


        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            int item = cbo_Elements.SelectedIndex;
            txt_Output.Text = cbo_Elements.Items[item].eValue.ToString();
        }
    }
}

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »GMoney597« (02.11.2015, 14:36)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

02.11.2015, 12:55

Stichwort cast. Schau bitte mal, was "Items" für einen Datentyp hat.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

GMoney597

Frischling

  • »GMoney597« ist der Autor dieses Themas

Beiträge: 48

Wohnort: Roth

Beruf: Verwaltungsfachangesteller (Stadtverwaltung), Fitness-Trainer und Muay-Thai-Trainer

  • Private Nachricht senden

3

02.11.2015, 13:04

Items ist vom Datentyp Element
Und von diesem Item an der Stelle [item] will ich ja den eValue-Wert auslesen/zurückgeben

Das mit dem "cast" habe ich auf diese Weise probiert und läuft auch nicht, ich habe manchmal auch das Gefühl, der Cast macht mir zusätzlich das leben schwer :-)

C#-Quelltext

1
txt_Output.Text = (Element)cbo_Elements.Items[item].eValue.ToString();

da caste ich doch dann praktisch in das Objekt "Element" oder sehe ich das falsch (sehr wahrscheinlich sogar - nur spann ich das wieder nicht :thinking: )


Von der Sache her, könnte ich auch mit einer List<> zusätzlich arbeiten, dann wüsste ich auch wie das alles funktioniert, aber ich dachte mir, doppelte Arbeit
kann man sich wohl sparen, wenn man die Elemente genauso einfach wie aus einer List<> ansprechen könnte und an diesem Punkt stehe ich jetzt und verzweifle
aufs Ganze ;( :S

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »GMoney597« (02.11.2015, 13:14)


GMoney597

Frischling

  • »GMoney597« ist der Autor dieses Themas

Beiträge: 48

Wohnort: Roth

Beruf: Verwaltungsfachangesteller (Stadtverwaltung), Fitness-Trainer und Muay-Thai-Trainer

  • Private Nachricht senden

4

02.11.2015, 13:18

txt_Output.Text = cbo_Elements.Items[item].eValue.ToString();

ich komme nicht an das Item an der Stelle[item], der verweigert mir den Zugriff auf die Funktion des Elements;
an der Stelle

C#-Quelltext

1
....Items[item].
bin ich es gewohnt, dass dann dort stünde
  • Equals
  • GetHashCode
  • GetType
  • eName
  • eValue
  • ToString

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

02.11.2015, 13:54

da caste ich doch dann praktisch in das Objekt "Element" oder sehe ich das falsch (sehr wahrscheinlich sogar - nur spann ich das wieder nicht :thinking: )
Du castest da aber den gesamten Ausdruck. Du musst den Wert aus "Items[x]" casten. Schau in die Doku, was da zurück kommt. Da mag ja zur Laufzeit eine Instanz von "Element" drin sein, deklariert ist es aber als object.

Wenn Items Objekte vom Typ Element speichert
Ist aber nicht der Fall. Items ist "effektiv" ein object[].

bin ich es gewohnt, dass dann dort stünde
Wenn Items[x] ein Element liefern würde, dann schon. Es liefert aber eben ein object.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (02.11.2015, 14:07)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

02.11.2015, 14:19

Mit dem Cast in diesem Ausdruck:

(Element)cbo_Elements.Items[item].eValue.ToString();

wird doch nur cbo_Elements gecastet
Nein. Es wird der komplette Ausdruck gecastet:
(int)foo.bar.foobar == (int)(foo.bar.foobar) != ((int)foo).bar.foobar

cbo_Elements.((Element)Items[item]).eValue.ToString();
Das ist syntaktischer Unfug. Bitte lass doch solche Kommentare sein, wenn Du nicht weißt, wie's geht. Das hilft hier auf Dauer niemandem.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

GMoney597

Frischling

  • »GMoney597« ist der Autor dieses Themas

Beiträge: 48

Wohnort: Roth

Beruf: Verwaltungsfachangesteller (Stadtverwaltung), Fitness-Trainer und Muay-Thai-Trainer

  • Private Nachricht senden

7

02.11.2015, 14:20

Coole Sache BC

Danke:

C#-Quelltext

1
2
3
            int item = cbo_Elements.SelectedIndex;
            Element temp = (Element)cbo_Elements.SelectedItem;
            txt_Output.Text = temp.eValue.ToString();


Ich könnte zwar über Deine Kommentare immer fluchen, weil Du meistens nur sagst, was zu tun ist oder was nicht stimmt :P , andererseits sind sie echt ein Segen, weil die Rübe dann echt angestrengt werden muss, mit dem Brocken, der als Hilfe angeboten wird :thumbsup:

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

02.11.2015, 14:21

weil die Rübe dann echt angestrengt werden muss
Das ist auch der Sinn dahinter. Vorsagen und abschreiben kann jeder. Selber denken bleibt viel länger im Gedächtnis.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

02.11.2015, 14:29

Der zweite Teil stimmt dann. Der erste ist natürlich immer noch falsch und jetzt sogar ein Widerspruch zum ersten.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

GMoney597

Frischling

  • »GMoney597« ist der Autor dieses Themas

Beiträge: 48

Wohnort: Roth

Beruf: Verwaltungsfachangesteller (Stadtverwaltung), Fitness-Trainer und Muay-Thai-Trainer

  • Private Nachricht senden

10

02.11.2015, 14:31

Danke Jungs,
hat super funktioniert

Die weitere Variante, die ich postete - klappte auch super und hab ich auch direkt verstanden

Werbeanzeige