List box - beim auslesen crash

NeroXiX

Grünschnabel
Hi leute ich hab da mal ne frage vieleicht kann mir von euch da jemand weiter helfen ich bin noch nicht so vit in C#.

Ich habe 2 list boxen erstellt in der einen werden daten aus einem text file aufgelisten was auch prima funktionier nun will ich diese daten jenach dem was select iert wurde über einen button in die 2'te listbox kopieren das funktioniert auch soweit ganz gut zumindest wen ich immer nur den ersten eintrag selectiere

sobald in
string check2 = listBox2.SelectedItems[1].ToString();

SelectedItems größer 0 wird crasht das ganze programm

Hier mal der code für die ganze button rotiene.

public void install(object sender, EventArgs e) {

string check = listBox2.SelectedIndex.ToString();
MessageBox.Show(check,"Info");
if (check == "-1") {

MessageBox.Show("Du must schon etwas zum Installieren auswaehlen","Info");

} else {

string check2 = listBox2.SelectedItems[listBox2.SelectedIndex].ToString();


if (check2 == "Bitte Updaten") {

MessageBox.Show("Du must erst die Datenbank updaten\rum eine aktuelle liste der vorhanden\rsoftware zu bekommen","Info");

} else {

MessageBox.Show(check2,"Info");

listBox2.BeginUpdate();
listBox3.Items.Add(check2);
listBox2.EndUpdate();
}

}

}


Ich weis einfach nicht mehr weiter woran könnt es liegen was hab ich falsch gemacht?
 

Alexander Schuc

crazy-weasel
Hallo,

interessant wäre, welche Fehlermeldung du bekommst, solltest du eine bekommen.

Ich würde übrigens das ein wenig anders machen.

Code:
public void install(object sender, EventArgs e)
{
	if (listBox2.SelectedItems.Count == 0)
	{
		MessageBox.Show("Du must schon etwas zum Installieren auswaehlen","Info");
	}
	else
	{
		for (int i = 0; i <  listBox2.SelectedItems.Count; i++)
		{
			string check2 = listBox2.SelectedItems[i].ToString();

			if (check2 == "Bitte Updaten")
			{
				MessageBox.Show("Du must erst die Datenbank updaten\rum eine aktuelle liste der vorhanden\rsoftware zu bekommen","Info");
			}
			else
			{
				MessageBox.Show(check2,"Info");
				
				listBox2.BeginUpdate();
				listBox3.Items.Add(check2);
				listBox2.EndUpdate();
			}
		}
	}
}

Zuerst überprüfen ob etwas selectiert ist, und das machst du indem du den Wert von SelectedItems.Count prüfst.
Sollte der über 0 sein, ist etwas ausgewählt.
Und danach einfach in einer For-Schleife jedes ausgewählte Item durchgehen. So kann man auch gleich mehrere Einträge verschieben, was für den Benutzer sicher bequemer ist.

Mfg,
Alex
 

NeroXiX

Grünschnabel
Danke Danke Danke Danke Danke Danke Danke Danke Danke Danke
Danke Danke Danke Danke Danke Danke Danke Danke Danke Danke
mit deinem code gehts

Die fehlermeldung sagte das er auf ungültigen speicherbereich zugriff.

Auf jeden fall geht das nun so wie es soll.

Wie gasagt bin noch nicht so fit in C# *g* bzw. ich steig grad von Perl auf C# um ^_^

Naja nochmal danke für die hilfe!

Mfg
Nero