2014-03-12 66 views
6

我想選擇已經在quickbook軟件中打開的文件。如何選擇使用OpenFileDialog打開的文件

代碼:

OpenFileDialog ofdBrowseVInv = new OpenFileDialog(); 

      ofdBrowseVInv.Title = "Locate QuickBook Company File"; 
      ofdBrowseVInv.Filter = "QuickBook Company File (*.qbw,*.qbw)|*.qbw;*.qbm"; 
      ofdBrowseVInv.FileName = ""; 


      if (ofdBrowseVInv.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
      { 
       string strfilename = ofdBrowseVInv.InitialDirectory + ofdBrowseVInv.FileName; 

      } 

選擇文件後..我得到的消息:在使用

任何一個可以告訴我如何可以選擇已經打開的文件文件.. 。

File in use Screen shot

+0

您共享的代碼不會產生文件正在使用的錯誤消息,因爲您只是在讀取文件名直到此刻。我相信你正試圖在之後打開文件導致錯誤。 – Riz

+0

從ShowDiloag選擇文件後...我得到的消息... – Kavitha

+0

而不是.QBW文件,如果我使用.xslx它工作....即使.xslx文件打開... – Kavitha

回答

2

使用打開文件對話框不會產生錯誤喲查找文件你描述一下,所以我假設你隨後打開這個文件。打開已被其他進程打開的文件通常會失敗,因爲其他進程對該文件有鎖定,所以打開一個「已經打開」的文件是不可能的。

但是,如果另一個進程(大概是QuickBooks)打開了帶有讀共享的文件,則可以通過指定正確的共享模式打開該文件。通常,您將使用File.OpenRead方法打開一個文件進行讀取,該方法將使用FileShare.Read。這會失敗,因爲其他進程已經有權寫入該文件。如果其他進程允許讀取共享,你將能夠讀取該文件

using (var fileStream = File.Open(strfilename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { 
    // ... read from fileStream 
} 

:但是,您可以通過使用File.Open方法,而不是指定共享模式FileShare.ReadWrite。但是,如果沒有,您將無法讀取該文件,除了關閉其他應用程序中的文件外,您無法完成這些任務。

1

此代碼爲我工作完美。

ofdBrowseVInv.ValidateNames = false; 
相關問題