2016-09-13 34 views
0

我有一個共同的對話框打開這樣的:SaveFileDialog的ShowDialog的,有時不顯示的形式,雖然它不是關閉的

private void SaveLogButton_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     SaveFileDialog dialog = new SaveFileDialog 
     { 
      Filter = @"Text file|*.txt", 
      Title = @"Save to...", 
     }; 

     if (dialog.ShowDialog()== DialogResult.OK) 
     { 
      // Do some job 
     } 
    } 
    catch (Exception ex) 
    { 
     // Handle some errors 
    } 
} 

然而,有時(與像10%的概率)ShowDialog()方法不顯示對話框本身,雖然我可以看到它的父窗體,我不能點擊(錯誤聲音出現)。唯一有幫助的是CtrlAltDel。

沒有例外觸發,並且調試將不會在ShowDialog後行。有什麼建議麼?

謝謝。

短添加:我正在使用WinForms的Excel加載項。

+1

它存在於主窗體後面嗎?這是一個多顯示器設置?如果將鼠標懸停在任務欄中的圖標上,它是否顯示兩個窗口? –

+0

對話框始終需要*擁有者*窗口。一個窗口可以放在頂部,並在關閉時返回焦點。 ShowDialog()有一個方便的重載,它不要求你明確聲明所有者。幾乎總能工作,它可以通過調用GetActiveWindow()來確定所有者應該是誰。除了它返回null時,它就是桌面窗口成爲所有者。嗯,哦。 Ctrl + Alt + Del時間在禁用*桌面窗口擁有的每個*窗口之後可能會受到啓發。:)從不跳過在任何互操作場景中選擇所有者。 –

+0

https://blogs.msdn.microsoft.com/oldnewthing/20040224-00/?p=40493 –

回答

相關問題