2013-08-15 18 views
5

chcę otworzyć folder, w którym plik został zapisany tylko i wybierz plik, który używam do tego małego kod:Otwórz folder problem

var psi = new ProcessStartInfo("Explorer.exe", "/select," + dlg.FileName); 
       Process.Start(psi); 

działa idealnie.

muszę umieścić ten kod w kilku miejscach, więc postanowiłem stworzyć metodę, jest również stan, w tej metodzie:

private static void OpenFolderAndSelectMyFile(string fileName) 
{ 
    if (MySettings.Default.openFolder == true) 
    { 
     var psi = new ProcessStartInfo("Explorer.exe", "/select," + fileName); 
     psi.WindowStyle = ProcessWindowStyle.Maximized; 
     Process.Start(psi); 
    }  
} 

To nie działa zgodnie z oczekiwaniami: otwiera folder nadrzędny (z folderu zawierającego mój plik). To także wybiera folder.

Dlaczego ta różnica w zachowaniu i jak go rozwiązać?

+5

Czy sprawdziłeś, czy nazwa pliku jest przekazywana? –

+2

Czy możesz również opublikować kod wywołujący? –

Odpowiedz

3

Jedynym sposobem, aby to nastąpiło, jest fileName nie jest tym, co było w oryginalnym kodzie. Kod jest dokładnie taki sam i działał zgodnie z oczekiwaniami, jeśli w rzeczywistości było to, co znajdowało się w oryginalnej lokalizacji kodu.

Jest prawdopodobne, że fileName jest teraz pełną ścieżką do folderu, a nie pełną ścieżką do pliku , w tym nazwą pliku.

+2

Masz rację, przekazałem ciąg, który został zmodyfikowany. Teraz działa poprawnie. – Sturm