none
OpenFileDialog1 Initial Directory no funciona con una carpeta en root? RRS feed

  • Pregunta

  • Este código hace que cuando abra un OpenFileDialog, aparezca en C:\

    OpenFileDialog1.InitialDirectory = "C:\"

    El problema, es que mi programa crea una carpeta llamada Archivos donde está el archivo, y me gustaría poder acceder a ella cada vez que abro el OpenFileDialog. Pero si hago esto, no funciona:

    OpenFileDialog1.InitialDirectory = "Archivos"
    Cómo podría lograr que siempre se abriera esa carpeta en el mismo lugar que el programa, sin utilizar una ruta fija?

    domingo, 27 de enero de 2019 2:08

Respuestas

  • Hola WeekSky  siempre que formules una pregunta trata de poner algo de codigo para que nos sea mas facil ayudarte bueno suponiendo que creas la carpeta en mismo directorio que la aplication entonces poner (Application.StartupPath &  "\Archivos") es lo correcto ojo mira como lo puse yo porque como lo pusiste te va dar error osea a si (StartupPath/Archivos.) esto es incorrecto ya que el / no es el correcto para una ruta debes usar el invertido \ y no estas concatenando con el & la forma correcta es (Application.StartupPath &  "\Archivos") eso es suponiendo que la carpeta esta creada en el mismo directorio que la aplicacion de otro modo te recomiendo crearla de este modo 

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim archivos As String = Application.StartupPath & "\Archivos"
            CrearDirectorio(archivos)
        End Sub
    
        Private Function CrearDirectorio(directorio As String) As Boolean
            My.Computer.FileSystem.CreateDirectory(directorio)
    
            If My.Computer.FileSystem.DirectoryExists(directorio) Then
                OpenFileDialog1.InitialDirectory = directorio
    
                Return True
            Else
                Return False
            End If
        End Function
    

    de este modo creas la carpeta en el directorio de la aplicación y ya el usar la variable archivos no te dará ningún problema o simplemente hacer esto  (Application.StartupPath &  "\Archivos") 

    otra cosa visual studio trae una herramienta que te silbe de mucha ayuda esta es el examinador de objectos 

    la puedes activar en el menú (Ver\Examinador de objectos) y lo activas esto te muestra todos los espacios de nombres y sus clases, interfaces, módulos, enumeraciones, etc  y te dice que hace cada clase cuales son sus métodos, propiedades y eventos y que hace cada cosa y cuales son los parámetros que se necesita el examinador de objectos lo puedes configurar a tu modo bueno es muy útil en cuanto a ayuda para entender mejor el Net Framework

    • Marcado como respuesta WeekSky domingo, 27 de enero de 2019 11:37
    domingo, 27 de enero de 2019 11:32

Todas las respuestas

  • Hola:
    Prueba algo como esto

    OpenFileDialog1.InitialDirectory = Application.StartupPath

    Un saludo desde Bilbo
    Carlos

    domingo, 27 de enero de 2019 9:29
  • Yo lo que quiero es que abra una carpeta que está en la carpeta del programa. (StartupPath/Archivos.) Eso se puede hacer?
    domingo, 27 de enero de 2019 9:51
  • Hola WeekSky  siempre que formules una pregunta trata de poner algo de codigo para que nos sea mas facil ayudarte bueno suponiendo que creas la carpeta en mismo directorio que la aplication entonces poner (Application.StartupPath &  "\Archivos") es lo correcto ojo mira como lo puse yo porque como lo pusiste te va dar error osea a si (StartupPath/Archivos.) esto es incorrecto ya que el / no es el correcto para una ruta debes usar el invertido \ y no estas concatenando con el & la forma correcta es (Application.StartupPath &  "\Archivos") eso es suponiendo que la carpeta esta creada en el mismo directorio que la aplicacion de otro modo te recomiendo crearla de este modo 

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim archivos As String = Application.StartupPath & "\Archivos"
            CrearDirectorio(archivos)
        End Sub
    
        Private Function CrearDirectorio(directorio As String) As Boolean
            My.Computer.FileSystem.CreateDirectory(directorio)
    
            If My.Computer.FileSystem.DirectoryExists(directorio) Then
                OpenFileDialog1.InitialDirectory = directorio
    
                Return True
            Else
                Return False
            End If
        End Function
    

    de este modo creas la carpeta en el directorio de la aplicación y ya el usar la variable archivos no te dará ningún problema o simplemente hacer esto  (Application.StartupPath &  "\Archivos") 

    otra cosa visual studio trae una herramienta que te silbe de mucha ayuda esta es el examinador de objectos 

    la puedes activar en el menú (Ver\Examinador de objectos) y lo activas esto te muestra todos los espacios de nombres y sus clases, interfaces, módulos, enumeraciones, etc  y te dice que hace cada clase cuales son sus métodos, propiedades y eventos y que hace cada cosa y cuales son los parámetros que se necesita el examinador de objectos lo puedes configurar a tu modo bueno es muy útil en cuanto a ayuda para entender mejor el Net Framework

    • Marcado como respuesta WeekSky domingo, 27 de enero de 2019 11:37
    domingo, 27 de enero de 2019 11:32
  • Una sugerencia: En lugar de concatenar la ruta y el archivo es preferible usar Path.Combine:

    Dim archivos As String = System.IO.Path.Combine(Application.StartupPath, "Archivos")

    Así no te tienes que preocupar de si una o la otra parte ya tiene la contrabarra para no duplicarla, porque el Path.Combine ya lo tiene en cuenta internamente. Tampoco te tienes que preocupar de recordar si es / o \.

    domingo, 27 de enero de 2019 17:07