Открыть только одну форму в событии - PullRequest
1 голос
/ 14 сентября 2011

Когда появляется определенное событие, я хочу открыть новую форму (используя ShowDialog), и, пока это диалоговое окно открыто, я хочу игнорировать / исключать из очереди все возникающие подобные похожие события.

Это возможно? Как?

Мой метод событий, которым я пытаюсь управлять, выглядит так:

void barcode_Scanned(object sender, string value)
{
    if(value.StartsWith("d")
    {
        // ShowDialog
    }
}

Сценарий:

  • Сканирование штрих-кода
  • otherForm.ShowDialog ()
  • Сканирование штрих-кода -> Игнорируется, потому что диалоговое окно уже открыто
  • Сканирование штрих-кода -> Игнорируется, потому что диалоговое окно уже открыто
  • otherForm закрыт
  • Сканирование штрих-кода
  • otherForm.ShowDialog () -> Возможно, потому что предыдущий закрыт

Спасибо!

Ответы [ 3 ]

3 голосов
/ 14 сентября 2011

Вы можете отключить событие после получения сканирования и восстановить соединение, когда будете готовы.

void barcode_Scanned(object sender, string value)
{
    barcode.Scanned -= barcode_Scanned;

    // do work

    barcode.Scanned += barcode_Scanned;
}
2 голосов
/ 14 сентября 2011

Вы можете просто использовать переменную или свойство, например:

private bool isDialogOpen = false;

void barcode_Scanned(object sender, string value)
{    
    if(value.StartsWith("d") && !isDialogOpen)
    {
        isDialogOpen = true;
        // ShowDialog            
        isDialogOpen = false;
    }
}
0 голосов
/ 14 сентября 2011

Если вы хотите, чтобы все остальные делали что-либо, попробуйте открыть модальное диалоговое окно, которое не позволит вам использовать другие формы, пока эта открыта, если это то, что вам нужно и / или работает ли оно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...