2014-03-12 4 views
6

Ich versuche die Datei auszuwählen, die bereits in der Quickbook-Software geöffnet ist.So wählen Sie die Datei aus, die bereits mit OpenFileDialog geöffnet wurde

Code:

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; 

      } 

Nach Auswahl der Datei .. ich bin immer Nachricht: Datei in Gebrauch

kann jemand mir sagen, wie kann ich die Datei auswählen, die bereits geöffnet wird ..

.

File in use Screen shot

+0

Der Code, den Sie freigegeben haben, wird keine Datei in Verwendung Fehlermeldung erzeugen, weil Sie nur den Dateinamen bis zu diesem Punkt lesen. Ich glaube, dass Sie versuchen, die Datei zu öffnen, die den Fehler verursacht. – Riz

+0

Nach der Auswahl der Datei von ShowDiloag ... Ich bekomme Nachricht ... – Kavitha

+0

Anstelle von .QBW-Datei, wenn ich .xslx es funktioniert .... auch wenn .xslx Datei öffnen ... – Kavitha

Antwort

2

Auffinden eine Datei eines geöffneten Datei-Dialog wird den Fehler yo nicht produzieren Du beschreibst also ich gehe davon aus, dass du die Datei anschließend öffnest. Das Öffnen einer Datei, die bereits von einem anderen Prozess geöffnet wurde, schlägt häufig fehl, weil der andere Prozess eine Sperre für die Datei hat, sodass es sehr wahrscheinlich sein wird, dass das Öffnen einer Datei, die "bereits geöffnet" ist, unmöglich ist.

Wenn jedoch der andere Prozess (vermutlich QuickBooks) die Datei mit Lesefreigabe geöffnet hat, können Sie die Datei öffnen, indem Sie den korrekten Freigabemodus angeben. Normalerweise öffnen Sie eine Datei zum Lesen mit der File.OpenRead-Methode, die FileShare.Read verwendet. Dies schlägt fehl, weil der andere Prozess bereits das Recht hat, in die Datei zu schreiben. Sie können jedoch den Sharing-Modus FileShare.ReadWrite unter Verwendung File.Open Methode angeben statt:

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

Wenn der andere Prozess lesen ermöglicht die gemeinsame Nutzung Sie in der Lage sein werden, die Datei zu lesen. Wenn dies nicht der Fall ist, können Sie die Datei nicht lesen, und Sie können nicht viel tun, außer dass Sie die Datei in der anderen Anwendung schließen.

1

Dieser Code perfekt für mich gearbeitet.

ofdBrowseVInv.ValidateNames = false; 
Verwandte Themen