2010-03-03 68 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。您可以嘗試讓業主成爲您的實際形式,但認爲這是短期內最有可能解決您的問題的解決方案。