Laufenden Schleife unterbrechen


Maxii

Mitglied
Hi!

Ich habe folgendes Problem:
Ich laufe in einer Schleife eine Tabelle durch. Es gibt einen Button, das das Ganze unterbrechen soll. Nur das Problem ist, dass das Programm nicht dazu kommt, dass der Status des Button abgefragt wird.

Code:
foreach(string s in files)
{
	... Code ...
	pbImport.Increment(1);
	this.Refresh();
	if(cancel == true)
	{
		MessageBox.Show("Halt");
	}
	... Code ...
}
Thx!
Markus
 

LordDeath

Erfahrenes Mitglied
Schau dir mal die MessageBox Klasse an. da musst du dann erst mal eine Auswahl der Buttons treffen!

z.B.: OK und Abrechen = ID_OK_CANCEL.

Dann musst du das Ergebnis des Buttons abfgragen --> MSDN

Und zum Schluss musst du die Schleife mit dem Schlüsselwort break; Abbrechen !


BloodyGreetz
 

Maxii

Mitglied
Ok danke erst mal für die Tipps!

Aber wieso kompliziert, wenn es einfach auch geht? ;)

Ich hab in meinem Buch weiter gestöbert und bin fündig geworden:

Code:
Application.DoEvents();
Für die, die den restlichen Code noch brauchen können:
Code:
foreach(string s in files)
{
        ... Code ...
	pbImport.Increment(1);
	this.Refresh();
	Application.DoEvents();
	if(cancel == true)
	{
		if(MessageBox.Show(....) == DialogResult.Yes)
		{
			this.DialogResult = DialogResult.Cancel;
			.... Code ...
			break;
		}
		else
		{
			cancel = false;
		}
	}
	... Code ...
}
Thx!
 

Maxii

Mitglied
LordDeath hat gesagt.:
Schau dir mal die MessageBox Klasse an. da musst du dann erst mal eine Auswahl der Buttons treffen!

z.B.: OK und Abrechen = ID_OK_CANCEL.

Dann musst du das Ergebnis des Buttons abfgragen --> MSDN

Und zum Schluss musst du die Schleife mit dem Schlüsselwort break; Abbrechen !


BloodyGreetz
Nochwas: du hast mein Problem nicht ganz verstanden. Der Eventhandler hat erst nachdem die Schleife fertig war den Click auf den Button registriert. Aber es ist ja mittlerweile gelüftet.