2011-09-14 4 views
1

特定のイベントが表示されたら、新しいフォームを(ShowDialogを使用して)開きたいのですが、このダイアログが開いている間に発生したすべての類似イベントを無視/デキューします。イベントで1つのフォームしか開きません。

可能でしょうか?どうやって?

私が管理しようとした私のイベントメソッドが似ている:

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

シナリオ:

  • バーコードスキャン
  • otherForm.ShowDialog()
  • バーコードスキャン - >ので無視既に開いているダイアログ
  • BarCodeスキャン - >ダイアログが既に開いているため無視されます
  • otherFormは
  • バーコードスキャン
  • otherForm.ShowDialog()閉じている - 以前は

感謝を閉じているため>の可能性!他のを使用してからあなたを停止することを、あなたは何をやって他のすべてを停止する場合は、モーダルダイアログボックスを開いてみてください

private bool isDialogOpen = false; 

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

答えて

2

あなた単にように、変数またはプロパティを使用することができますそれはあなたが必要とするものであれば、そして/またはそれが機能するのであれば、それは開いていますか?

+0

はダイアログを閉じた後にイベントが発生した場合、ダイアログが直接開くことになる代わりに無視されて –

+0

がスキャナに思え、動作しません私のためにそれをキューに入れる、それはAPIデバイスの問題です。ありがとうございました... –

3

スキャンを受信するとイベントを切断し、準備ができたら再接続できます。ダイアログが開くまで、イベントをキューに入れ、順次と呼ばれている、ので

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

    // do work 

    barcode.Scanned += barcode_Scanned; 
} 
+0

イベントを再接続しようとしましたが、動作していません。接続されていない状態でスキャンが実行された場合、即座に再度起動されます... –

+0

@Arnaud F:スキャナのような音が他の言葉、ベンダー特有の問題)。それをしないための追加の特性があるかもしれません。 –

+0

それは私がすべてを試したので私が思う問題です、そして、私はいつもこの行動を観察しました。 –

関連する問題