2010-03-03 73 views
1

我正在做一个小程序来打开Excel电子表格,更新它,然后将其保存到一个新文件,然后关闭所有东西。C# - SaveFileDialog不显示为活动窗口

它是所有主要是除了当我用SaveFileDialog弹出窗口是隐藏Excel窗口后面,在第一次尝试唯一的工作(以下尝试,通过一个按钮来触发,与SaveFileDialog所有工作冒尖)。

有没有人知道我如何得到这种情况发生在第一次发生?

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

这里是我使用的savefiledialog代码...

SaveFileDialog saver = new SaveFileDialog(); 
      saver.FileName = "test"; 
      saver.DefaultExt = "xls"; 
      saver.Filter = "Microsoft Office Excel Workbook |(*.xls*)"; 
      saver.CheckFileExists = false; 
      saver.InitialDirectory = "c:\\George"; 

     if (saver.ShowDialog() == 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); 

非常感谢,乔治

回答

0

IIRC你必须设置OwnerWndProc是Excel应用程序的主窗口。

+0

好的,谢谢,我会看看如果我能找到一个在C#中使用thins的例子。 ;-) – George 2010-03-03 15:46:33

0

哈克但工作液:

 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。您可以尝试让业主成为您的实际形式,但认为这是短期内最有可能解决您的问题的解决方案。