2016-03-01 61 views
1

我的班上有一個OpenFileDialog實例,就像這樣。Windows窗體OpenFileDialog,防止打開實例,如果對話框已經顯示

public MyClass 
{ 
    public OpenFileDialog Dialog { get; set; } 

    public MyClass() 
    { 
     Dialog = new OpenFileDialog(); 
    } 

    public void ShowDialog() 
    { 
     if (Dialog.ShowDialog() == DialogResult.OK) 
     { 
      DoStuff(Dialog.FileNames); 
     } 
    } 
} 

問題是,如果我點擊垃圾按鈕打開對話框3次,對話框會彈出一次。一旦我關閉了第一個對話框,它會再顯示兩次。有沒有什麼方法可以檢測到對話框是否已經顯示,以防止彈出對話框?

編輯:我也使用這從unity3d體驗利用單一版本的System.Windows.Forms。因此,確實沒有一個形式的「擁有」對話框,它是統一遊戲窗口。推送的按鈕是遊戲內的GUI元素。

感謝

+0

那麼,這不應該發生。該對話框應該禁用擁有該按鈕的窗口,以便您不能再次單擊它。非常不清楚發生了什麼,但使用ShowDialog(所有者)重載是非常重要的,所以您不要將它留給該類來找到所有者。它可能會選擇錯誤的,然後你有這個問題。 –

回答

2

嘗試:

Dialog.ShowDialog(this); 

這裏假設this是他形成包含按鈕。這應該將對話框顯示爲帶有窗體的模式,因爲它的主人會阻止您激活或使用該窗體上的控件,直到對話框被解除。

相關問題