C# - SaveFileDialog未显示为活动窗口

时间:2010-03-03 14:20:14

标签: c# savefiledialog

我正在做一个小程序来打开Excel电子表格,更新它然后将其保存到新文件然后关闭所有内容。

除了当我使用SaveFileDialog时,弹出窗口隐藏在excel窗口后面,仅在第一次尝试时(在尝试之后,由按钮触发,所有工作都使用{{1})突然出现。)

有没有人知道我是如何在第一次出现时发生的?

我还想知道是否可以突出显示文件名,以便用户可以附加到文件名而不是直接覆盖它,通常是错误的?

以下是我用于savefiledialog的代码......

SaveFileDialog

非常感谢,乔治

2 个答案:

答案 0 :(得分:0)

IIRC你必须将OwnerWndProc设置为excel应用程序的主窗口。

答案 1 :(得分:0)

一个hacky但工作正常的解决方案:

        saver.FileName = "test";
        saver.DefaultExt = "xls";
        saver.Filter = "Microsoft Office Excel Workbook |(*.xls*)";
        saver.CheckFileExists = false;
        saver.InitialDirectory = "c:\\George";
        Form dummyForm = new System.Windows.Forms.Form();
    if (saver.ShowDialog(dummyForm) == DialogResult.OK)
        //MessageBox.Show("Save Dialog launched");
        excelWorkbook.SaveAs(saver.FileName, Type.Missing, Type.Missing,Type.Missing,
        Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing, Type.Missing);

我所做的就是创建一个新的虚拟表单并将SaveFileDialogue抛给它。您可以尝试让所有者成为您的实际形式,但认为这是短期内最有可能解决您问题的方法。