Search code examples
vb.netwinformsvisual-studio-2017

Issue with OpenFileDialog and InitialDirectory property


I have two Buttons and two OpenFileDialogs and I am facing an issue with InitialDirectory property. When I choose a file for my first OpenFileDialog and then click to choose a file for my second OpenFileDialog, I get the same InitialDirectory and not the ones I have set!!!

Here is an example of my code...

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim FileDialog As New OpenFileDialog
        Dim Path As String = Nothing

        If Label1.Text IsNot Nothing And My.Computer.FileSystem.FileExists(Label1.Text) Then
            Path = Label1.Text
        Else
            Path = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
        End If

        FileDialog.Title = "Open File Dialog"
        FileDialog.InitialDirectory = Path
        FileDialog.Filter = "Executable (*.exe)|*.exe"
        FileDialog.RestoreDirectory = True

        If FileDialog.ShowDialog() = DialogResult.OK Then
            Label1.Text = FileDialog.FileName
        End If
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim FileDialog As New OpenFileDialog
        Dim Path As String = Nothing

        If Label2.Text IsNot Nothing And My.Computer.FileSystem.FileExists(Label2.Text) Then
            Path = Label2.Text
        Else
            Path = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
        End If

        FileDialog.Title = "Open File Dialog"
        FileDialog.InitialDirectory = Path
        FileDialog.Filter = "Executable (*.exe)|*.exe"
        FileDialog.RestoreDirectory = True

        If FileDialog.ShowDialog() = DialogResult.OK Then
            Label2.Text = FileDialog.FileName
        End If
    End Sub

Solution

  • Well I found what was wrong...

    I just had to set the Path variable like this Path = IO.Path.GetDirectoryName(Label1.Text) and not like this Path = Label1.Text. Because the first one gets file's directory path (which is required) and the second one gets file's path. And I was using the second one...