2016-09-13 3 views
0

Я общий диалог открыт, как это:SaveFileDialog иногда не показывает форму, хотя это не закрываемый

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 линии. Какие-либо предложения?

спасибо.

Краткое описание: Я работаю над надстройкой Excel с помощью WinForms.

+1

Он существует за основной формой? Это настройка нескольких мониторов? Если вы наведите указатель мыши на значок на панели задач, отобразите ли он оба окна? –

+0

Диалог всегда требует окна * владельца *. Окно может быть сверху и возвращать фокус, когда оно закрывается. ShowDialog() имеет удобную перегрузку, которая не требует, чтобы вы указали владельца явно. Работает всегда, он может понять, кто должен быть владельцем из GetActiveWindow(). За исключением случаев, когда он возвращает null, тогда это окно рабочего стола становится владельцем. Ой-ой. Ctrl + Alt + Del время может быть вдохновлено после того, как оно отключено * каждое окно, которое принадлежит окну рабочего стола. Никогда не пропустите выбор владельца в любом сценарии взаимодействия. –

+0

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

ответ