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加載項。
它存在於主窗體後面嗎?這是一個多顯示器設置?如果將鼠標懸停在任務欄中的圖標上,它是否顯示兩個窗口? –
對話框始終需要*擁有者*窗口。一個窗口可以放在頂部,並在關閉時返回焦點。 ShowDialog()有一個方便的重載,它不要求你明確聲明所有者。幾乎總能工作,它可以通過調用GetActiveWindow()來確定所有者應該是誰。除了它返回null時,它就是桌面窗口成爲所有者。嗯,哦。 Ctrl + Alt + Del時間在禁用*桌面窗口擁有的每個*窗口之後可能會受到啓發。:)從不跳過在任何互操作場景中選擇所有者。 –
https://blogs.msdn.microsoft.com/oldnewthing/20040224-00/?p=40493 –