Я делаю программу, которую вы можете создать и загрузить в виде пакета с помощью CSV-файлов. Когда выбран файл CSV, он открывает другой пользовательский интерфейс с вопросом, ответом и изображением для карточки и продолжает цикл до тех пор, пока все карточки в пакете не пройдут, используя цикл foreach.
Однако цикл foreach будет продолжать цикл без нажатия пользователем кнопки «Далее». Чтобы это исправить я сделал:
while (Continue() == false) { } //this is at the end of the foreach loop
}
}
private bool Continue()
{
if (btn_NextFlashcard_WasClicked) return true;
Application.DoEvents();
Thread.Sleep(250);
Application.DoEvents();
return false;
}
private bool btn_NextFlashcard_WasClicked;
private void btn_NextFlashcard_Click(object sender, EventArgs e)
{
btn_NextFlashcard_WasClicked = true;
}
Это исправило проблему повторного зацикливания без нажатия кнопки для следующей карточки, но теперь он даже не открывает второй пользовательский интерфейс для нажатия следующей кнопки карточки.
Как бы это исправить? Любая помощь будет принята с благодарностью.
Код для цикла foreach:
public void ReadFlashcardPack(string file)
{
var records = engine.ReadFile(file);
foreach (var record in records)
{
Console.WriteLine("New foreach loop");
lblQuestion.Text = record.question;
lblAnswer.Text = record.answer;
lblAnswer.Visible = false;
btn_NextFlashcard_WasClicked = false;
//check if there is an image
if (record.image == "FALSE")
{
Image.Hide();
}
else
{
Image.Show();
Image.Image = Properties.Resources.test_image;
}
while (Continue() == false) { }
}
}
Записи также приходят из класса: [DelimitedRecord(",")]
public class FlashcardPack
{
public string question;
public string answer;
public string image;
}
А затем создается новый экземпляр механизма FileHelpers private FileHelperEngine<FlashcardPack> engine = new FileHelperEngine<FlashcardPack>();
для чтения файла csv, и каждый раз, когда цикл foreach зацикливает record.question, record.answer и record.image, изменяется в зависимости от того, на какой строке находится цикл.