2016-11-14 9 views
0

Я сталкиваюсь с незначительной проблемой UX с SaveFileDialog.OverWritePrompt в моем приложении Windows Form Application. Когда я выбираю перезаписать файл, приглашение должно появиться сверху, но это не так. Однако создается приглашение. Чтобы он появился сверху, мне нужно нажать клавишу Alt. Вот мой код. Я надеюсь, что вы сможете воспроизвести мою ошибку.SaveFileDialog Overwrite Prompt Not On Top

private void ExportImage_Option_Click(object sender, EventArgs e) 
{ 
    if (this.Main_PictureBox.Image != null) 
    { 
     SaveFileDialog SFD = new SaveFileDialog(this); 
     SFD.Filter = "Image Files (*.bmp, *.jpg, *.png)|*.bmp;*.jpg;*.png"; 
     SFD.OverwritePrompt = true; 
     DialogResult Result = SFD.ShowDialog(this); 
     if (Result == DialogResult.OK) 
     { 
      this.Main_PictureBox.Image.Save(SFD.FileName); 
     } 
    } 
    else { 
     MessageBox.Show("Nothing to export."); 
    } 
} 
+0

Не могли бы вы вызвать 'SFD.ShowDialog (this)' вместо 'SFD.ShowDialog()'? – Dmitry

+0

Сделано! К сожалению, проблема все еще сохраняется. – GarrettML

+0

К сожалению, я не могу воспроизвести эту ошибку. Всплывающее окно появляется поверх всех окон. –

ответ

0

Вы должны указать владельца SFD:

DialogResult Result = SFD.ShowDialog(this); 

Из MSDN:

Эта версия метода ShowDialog позволяет указать конкретный форму или элемент управления, который будет владеть отображаемое диалоговое окно. Если вы используете версию этого метода, которая не имеет параметров, отображаемое диалоговое окно будет автоматически принадлежать текущему активному окну вашего приложения.

Подробнее: https://msdn.microsoft.com/en-us/library/9a55b9ds(v=vs.110).aspx

+0

Ваш вход хорошо принят, и я его внедрил. Однако исходный вопрос по-прежнему сохраняется. Я буду обновлять исходный запрос, чтобы отразить это изменение. – GarrettML

0

Это, кажется, специфичные для моего компьютера, так как никто не может воспроизвести проблему. Это не связано с кодом, но скорее связано с моими системными настройками.