Autor Beitrag
m-s
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Mi 22.06.11 14:39 
Hallo Zusammen,

ich habe nen Brett vorm Kopf :)
Vermutlich ein einfaches Problem aber ich find einfach die Lösung nicht.

Ich habe eine comboxBox und möchte auf das Ereignis selectedindexchanged reagieren. Ich mache das im gleichen Programm auf der gleichen Form mit einer anderen ComboBox ohne Probleme und weiß einfach nicht was ich da immer falsche mache ... naja also

Ich habe ne ComboxBox comboBox_Pferd_Name und eine comboBox_Pferd_ID. Wenn sich der Index der comboBox_Pferd_Name ändert möchte ich den Wert aus der comboBox_Pferd_ID lesen. Um das zu erreichen habe ich im Ereignis comboBox_Pferd_Name_SelectedIndexChanged nur die Gleichschaltung der beiden Indexe

ausblenden C#-Quelltext
1:
2:
3:
4:
        private void comboBox_Pferd_Name_SelectedIndexChanged(object sender, EventArgs e)
        {
            comboBox_Pferd_ID.SelectedIndex = comboBox_Pferd_Name.SelectedIndex;
        }


Im Ereignis comboBox_Pferd_ID_SelectedIndexChanged habe ich dann eine etwas längere Abfrage, bzw. ich stoße die Abfrage dort an.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
        private void comboBox_Pferd_ID_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (abfragelaeuft == false)
                Pferd_Ort_Abfragen();
        }


In der Methode Pferd_Ort_Abfrage() gibt es unter anderem

ausblenden C#-Quelltext
1:
pferd_ID = Convert.ToInt64(comboBox_Pferd_ID.SelectedValue.ToString());					


Und hier gibt es immer die Ausnahme. NullReferenzException.
Ich verstehe einfach nicht wie es dazu kommt. In der ComboBox sollten Werte drin stehen, denn ich wechsle ja nur den Index.

Habt Ihr ne Idee worauf ich achten kann/muss

_________________
Gruß Markus
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 22.06.11 17:42 
Hallo Markus,

hast du denn die Daten per DataBindung (d.h. über die DataSource-Eigenschaft) hinzugefügt und den "ValueMember" gesetzt?

Ich denke, du suchst eher SelectedItem.

P.S. Wenn du korrekt das DataBinding für beide ComboBoxen durchführst, dann brauchst du nicht von Hand die Gleichschaltung (per SelectedIndexChanged) zu programmieren:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
comboBox_Pferd_Name.DisplayMember = "Name";
comboBox_Pferd_Name.DataSource = pferdeList;

comboBox_Pferd_ID.DisplayMember = "Id";
comboBox_Pferd_ID.DataSource = pferdeList;

Für diesen Beitrag haben gedankt: m-s
m-s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Mi 22.06.11 21:31 
Hi,

vielen Dank für die Antwort.
Ich habe eine Mischung in dem Form. Es gibt eine ComboBox die nen Databinding hat. Da lese ich dann die ID direkt aus, wie Du es vorgeschlagen hast.
Diese ID benutze ich dann um manuell auf weitere Tabelle zuzugreifen und dort Werte rauszulesen die bestimmte Bedingungen erfüllen. Die Werte fülle ich dann mit add in erst eine ComboBox (eigentlich sind es zwei ComboBoxen, eine für den User und eine fürs Programm (Namen und ID), dann lese ich wieder den selektierten Wert und fülle wieder manuell die nächste Combobox (wieder in zwei Boxen, die paare schalte ich jeweils gleich).

Sinn der Aktion ist das in der zweite Box nur Werte angezeigt werden die zur ersten passen und in der dritte nur welche die zur ersten und zweiten ComboBox passen. Das umschalten der zweiten Box klappt ohne Probleme, ich kann den Wert ändern, lese über das Databinding die ID aus, suche in den Datenbanken die Werte und schreibe sie in die zweite Box.

So oder so :)
Das war genau die Lösung SelectedItem hat mir den Wert geliefert.

Ist es so, dass SelectedValue für ComboBoxen mit Databinding ist und SelectedItem für welche ohne?


Noch ne kleine Nachfrage.
Ich lösche den INhalt der ComboBoxen vor dem Befüllen

ausblenden C#-Quelltext
1:
2:
3:
            // Comboxen leeren
            comboBox_Ort_Name.Items.Clear();            
            comboBox_ort_id.Items.Clear();


Das klappt auch, nur der angezeigte Text im Feld bleibt bestehen. Also wenn vor dem Leeren der ComboBox eine 1 drin stand, steht die da auch wenn keine neue Werte gefüllt werden. Wie kann ich denn die ComboBox komplett zurück setzen / leeren?

_________________
Gruß Markus
Chiyoko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Do 23.06.11 08:22 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
comboBox_Ort_Name.Text = "";

// oder..

comboBox_Ort_Name.Text = string.empty;

Für diesen Beitrag haben gedankt: m-s
m-s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Do 23.06.11 09:37 
Ja super, vielen Dank,

so simpel und ich bin trotzdem nicht drauf gekommen. :)

_________________
Gruß Markus
m-s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Do 23.06.11 09:40 
Meine letzte offene Frage beantworte ich mir selbst :)
Zwar in der falschen Sprache, aber hier stehts:

_________________
Gruß Markus