Ich mache einen Code in C#, wo ich einige Datensätze aus einer Access-Datenbank extrahieren, aber ich brauche die auf die nächste Iteration auf dem Klicken einer Schaltfläche abhängen . Ich habe versucht, mit einem Thread oder Aufgaben, aber es hat nicht funktioniert, weil es die Benutzeroberfläche blockiert, die ich es gesehen und klickbar benötigt.C# - Machen Sie UI-Funktion während einer Endlosschleife, bis die Taste gedrückt
Hier ist der Code:
bool nextClick = false ;
while (readerSelect.Read())
{
// show the correct panel
if (string.Compare(readerSelect[2].ToString(), "P1") == 0)
{
// panel with type 1
textBoxP1Text1.Text = readerSelect[3].ToString();
textBoxP1Text2.Text = readerSelect[4].ToString();
pictureBoxP1Image.ImageLocation = readerSelect[6].ToString();
}
else
{
// panel with type 2
textBoxP1Text2.Text = readerSelect[5].ToString();
}
//this while need to be kind of infinite so the interation can't be processed and
//so when i need to change iteration i click the buttonNext
while (!nextClick) {
startWhile:;
MethodInvoker mi = delegate() {
if (nextClick)
{
Application.DoEvents();
// System.Windows.Forms.Application.Run();
}
};
this.Invoke(mi);
//break;
goto startWhile;
}
private void buttonNext_Click(object sender, EventArgs e)
{
// click on the next button
nextClick = true;
}
Wenn Sie nur nach einem Klick zum nächsten Element gehen müssen, dann verwenden Sie keine While-Schleife ... machen Sie einfach einen bei jedem Klick ... – Milney
Dies wird einen großen Einfluss auf unsere Verbindung haben, die irgendwie ist arm, aber danke für die Antwort –
Was meinst du eine "große Auswirkung auf Ihre Verbindung"? Das ist nur falsch. So wie du es jetzt machst und auf diese Weise wirst du immer nur lesen können, wie viele Aufzeichnungen es gibt. Du liegst falsch. Ich würde empfehlen, die DataReader-Dokumentation zu lesen, bis Sie sie als ersten Punkt besser verstehen. – Milney