Autor Beitrag
lapadula
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Mi 15.02.17 11:25 
Hallo, ich habe folgendes Problem und ich hoffe jemand kann mir weiterhelfen.

Wenn in einer ListView ein Item ausgewählt wurde, dann wird je nach Text, welcher im SubItem[1] steckt, in einer ComboBox das passende Item ausgewählt.
Die ComboBox cbProjekt wird vorher mit Items aus einer Datenbank gefüllt.

Z. B. steht im SubItem[1] der ListView "Hallo Welt". Die ComboBox enthält dieses "Hallo Welt" unter Index 9 und dieses soll er auswählen.

Was mir aufgefallen ist, ist das er nur dann die ComboBox füllt, wenn im SubItem[1] vorher etwas anderes stand. Wenn aber in zwei verschiedenen Items, im SubItem[1] das gleiche steht, dann bleibt die
comboBox leer.

Seltsamerweise funktioniert das mit einem anderen SubItem[2] und einer anderen ComboBox bestens.

Die Notlösung steht in der auskommentierten Zeile, damit geht es dann.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
if (listViewTermine.SelectedItems.Count >= 1)
            {
                panel2.Enabled = true;

                cbProjekt.SelectedIndex = cbProjekt.FindStringExact(listViewTermine.SelectedItems[0].SubItems[1].Text);
                //cbProjekt.Text = listViewTermine.SelectedItems[0].SubItems[1].Text;
}


Kann mir das vllt jemand erklären?


Moderiert von user profile iconTh69: Topic aus Basistechnologien verschoben am Mi 15.02.2017 um 12:31
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 15.02.17 12:36 
- Nachträglich durch die Entwickler-Ecke gelöscht -
lapadula Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Mi 15.02.17 12:55 
Ja die ComboBox wird zuvor mit Inhalt gefüllt, im Konstruktor, sonst nirgendwo.

Statt füllen meinte ich markieren.

Beispiel:

Programmstart:

Klick auf ListViewItem 1:
listViewTermine.SelectedItems[0].SubItems[1].Text = "Hallo Welt"
Markierter ComboBoxText = "Hallo Welt"

Klick auf ListViewItem 2:
listViewTermine.SelectedItems[0].SubItems[1].Text = "Hallo Welt"
Markierter ComboBoxText = "" (leer, nicht wird markiert)

Klick auf ListViewItem 3:
listViewTermine.SelectedItems[0].SubItems[1].Text = "Hallo Entwickler-Ecke"
Markierter ComboBoxTest = "Hallo Entwickler-Ecke"

Klick auf ListViewItem 4:
listViewTermine.SelectedItems[0].SubItems[1].Text = "Hallo Entwickler-Ecke"
Markierter ComboBoxText = "" (leer, nicht wird markiert)

Kurz gesagt, wenn der Text im SubItem[1] sich vom vorherigen Text unterscheidet, dann wird in der comboBox der richtige Text markiert.
Ist der Text im SubItem[1] der selbe, dann wird in der comboBox nichts markiert.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 15.02.17 13:23 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: lapadula
lapadula Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Mi 15.02.17 13:37 
Den Code habe ich im SelectedIndexChanged-Event von der listView drin und ich wähle auch immer nur ein Item aus
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 15.02.17 13:51 
- Nachträglich durch die Entwickler-Ecke gelöscht -
lapadula Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Mi 15.02.17 14:09 
Danke für deine Mühe, dann muss ich mal woanders im Code suchen :/
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 15.02.17 20:45 
Zitat:
Klick auf ListViewItem 2:
listViewTermine.SelectedItems[0].SubItems[1].Text = "Hallo Welt"
Markierter ComboBoxText = "" (leer, nicht wird markiert)


Wenn du weißt was in der Text Property des Items steht gehe ich davon aus das du das debugged hast. Dann sag uns doch bitte auch was in dem Fall aus FindStringExact rauskommt und was nach der Zuweisung zu SelectedIndex in SelectedIndex drinsteht (wirklich prüfen nicht einfach davon ausgehen das wenn ich der Property was zuweise es auch beim lesen der Property so wieder zurückkommt).

Aus den einzelnen Infos können wir uns dann besser zusammenreimen was/wo schief geht und haben dann vielleicht eine Idee was bei dir anders ist als das was Frühlingsrolle ausprobiert hat.
lapadula Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Fr 17.02.17 10:50 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
MessageBox.Show(cbProjekt.SelectedIndex.ToString());

cbProjekt.SelectedIndex = cbProjekt.FindStringExact(listViewTermine.SelectedItems[0].SubItems[1].Text);

MessageBox.Show(cbProjekt.SelectedIndex.ToString());
MessageBox.Show(cbProjekt.FindStringExact(listViewTermine.SelectedItems[0].SubItems[1].Text).ToString());


Ausgabe:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Programmstart (Erster Klick)

ComboBoxIndex:  -1, 9, 9 | 9 | 0
cbProjekt.SelectedIndex = cbProjekt.FindStringExact(listViewTermine.SelectedItems[0].SubItems[1].Text);
CombBoxIndex:    9, 9, 9 | 0 | 9
FindStringExact: 9, 9, 9 | 0 | 9

Geht ja/nein:    j, n, n | j | j

Nach einem Komma wird auf ein Item mit dem Selben Text geklickt, nach dem Senkrechten Strich wurde auf ein Item geklickt, wo ein anderer Text steht.

ich hoffe es ist verständlich.

Moderiert von user profile iconTh69: Code-Tags (für Tabellenansicht) hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 17.02.17 13:05 
Zitat:
ich hoffe es ist verständlich.


Leider nein.

Für diesen Beitrag haben gedankt: lapadula
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 17.02.17 13:55 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: lapadula
lapadula Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Fr 17.02.17 14:04 
Sorry, das sollte eig eine Tabelle werden die die MessageBox-Ausgaben anzeigen soll.

Erster Klick nach dem Programmstart, erste MessageBox-Ausgabe (comboBoxIndex) = -1, dann folgt die Codezeile (cbProjekt.SelectedIndex = cbProjekt.FindStringExact(listViewTermine.SelectedItems[0].SubItems[1].Text);), dann wird wieder der comboBoxIndex ausgegeben, dieser ist wieder 9 und zum Schluss noch eine MessageBox die auch die 9 ausgibt. Die Kommata stehen für ein klick auf ein ListViewItem. Dieses Item enhält den selben Text wie das ListViewItem davor. Bei dem senkrechten Strich (|) klicke ich auf ein Item wo der Text ein anderer ist.

Bei Geht ja/nein schreibe ich jeweils ob es funktioniert hat oder nicht. Wie man sieht markiert er ganz am anfang den Text (j), dann wird ein Item angeklickt welches den selben Text enthält und es funktioniert nicht (n), dann wieder ein Item mit dem selben Text (n). Nun klicke ich ein Item an welches einen anderen Text hat als das davor und es geht (ja), dann wieder ein Item mit einem anderen Text als das Item davor und wieder funktioniert es (j)

Ich darf das Projekt leider nicht hochladen :)
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 17.02.17 14:20 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: lapadula
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 17.02.17 14:22 
Zitat:
erste MessageBox-Ausgabe (comboBoxIndex) = -1

Dein ComboBox kann also auch keine Auswahl haben? Bzw. der TextBox teil der ComboBox ist frei editierbar?
Zitat:
(cbProjekt.SelectedIndex = cbProjekt.FindStringExact(listViewTermine.SelectedItems[0].SubItems[1].Text);), dann wird wieder der comboBoxIndex ausgegeben, dieser ist wieder 9

Das heißt für mich das FindStringExact nicht funktioniert oder genauer zumindest nicht das von dir erwartete liefert(Hast du dir zu diesem Zeitpunkt auch den Inhalt der Text Property des ListViewItems angesehen das in FindStringExact reingeht? Nicht nachher über einen weiteren Zugriff für eine MessageBox ausgabe sondern beim debuggen während du in der Zeile bist beim Zuweisen des SelectedIndex)



Was für eine ComboBox ist das genau? Mich würde die Einstellung vom DropDownStyle interessieren.
Sind die Werte in der Liste der ComboBox Unique?
Sind weitere Events der ComboBox verdrahtet?
Sind weitere Events des ListViews verdrahtet?

Wenn es da ein Problem gibt sollte wir das mit diesen Infos nachstellen können.

Für diesen Beitrag haben gedankt: lapadula
lapadula Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Fr 17.02.17 16:17 
Ja zu Beginn ist die ComboBox leer und frei editibar ist diese auch (muss ich aber noch abstellen)

Der Text den FindStringExact empfängt ist immer richtig. Hab den Text auch hardcoded übergeben. Der markiert den nur, wenn ich das Programm zum ersten mal starte und in der comboBox nichts markiert ist vorher und wenn ich in die comboBox was eingebe und dann auf ein ListViewItem klicke, dann klappt es auch. Fazit: In der comboBox darf nicht der selbe Text stehen.

Die ComboBox hat sonst keine weiteren Events. Die ListView hat ein paar weitere wie ItemSelectionChange, ColumnsWidthChange, DoubleClick, DragDrop, DragEnter, dort wird meine comboBox aber nicht angerührt.

Die ComboBox hat nur 10 Werte und wird nur einmal gefüllt.

Es handelt sich um eine stinknormale comboBox mit DropDownStyle : DropDown

EDIT: Mit DropDownStyle : DropDownList funktioniert es! Ich weiss nur nicht warum. Mir ist nur aufgefallen, dass der Text sich nicht instant ändert sondern ein wenig verschwommen wirkt.

Den Grund wüsste ich zwar gerne aber es passt nun so wie ich wollte. Vielen Dank an alle
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 17.02.17 18:11 
- Nachträglich durch die Entwickler-Ecke gelöscht -
lapadula Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Mo 20.02.17 09:50 
Dein Programm funktioniert, egal welche Einstellungen ich dort vornehme.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 20.02.17 10:59 
- Nachträglich durch die Entwickler-Ecke gelöscht -
lapadula Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Mo 20.02.17 14:52 
Eig schlecht, weil ich immer noch nicht genau weiss woran es liegt und warum DropDownList Style das Problem löst.

Der Quelltext ist soweit gleich. Ich tue dort aber Objekte rein. Das Objekt Namens Projekt hat Felder und eines davon, nämlich den Programmnamen override ich ToString() und packe da dann in die ComboBox.

Dürfte aber daran nicht liegen oder, ich meine string ist string bzw. ein String[] ist doch auch ein Objekt
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 20.02.17 17:37 
- Nachträglich durch die Entwickler-Ecke gelöscht -