事件中只打开一个表单

时间:2011-09-14 14:57:24

标签: c# events

当一个特定事件出现时,我想打开一个新表格(使用ShowDialog),当这个对话框打开时,我想忽略/出列所有引发的类似事件。

有可能吗?怎么样?

我尝试管理的事件方法如下:

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

情景:

  • BarCode扫描
  • otherForm.ShowDialog()
  • 条形码扫描 - >因为对话框已经打开而被忽略
  • 条形码扫描 - >因为对话框已经打开而被忽略
  • otherForm已关闭
  • BarCode扫描
  • otherForm.ShowDialog() - >可能因为之前已关闭

谢谢!

3 个答案:

答案 0 :(得分:3)

您可以在接收扫描时断开事件,并在准备好后重新连接。

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

    // do work

    barcode.Scanned += barcode_Scanned;
}

答案 1 :(得分:2)

可以简单地使用变量或属性,例如:

private bool isDialogOpen = false;

void barcode_Scanned(object sender, string value)
{    
    if(value.StartsWith("d") && !isDialogOpen)
    {
        isDialogOpen = true;
        // ShowDialog            
        isDialogOpen = false;
    }
}

答案 2 :(得分:0)

如果你想阻止其他任何事情做,请尝试打开一个模态对话框,如果那是你需要的和/或它是否有效,那将阻止你使用其他形式的其他形式?