2016-11-14 51 views
0

我在我的C#Windows窗体应用程序中遇到与SaveFileDialog.OverWritePrompt有关的次要用户体验问题。当我选择覆盖文件时,提示应该出现在顶部,但不是。虽然提示正在创建。为了让它出现在最前面,我必须按下Alt键。这是我的代码。我希望你能重现我的错误。SaveFileDialog覆盖提示不在顶部

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

这似乎是具体到我的电脑,因为没有人能重现该问题。这与代码无关,但更可能与我的系统设置有关。