Como usar FolderBrowserDialog

Iniciado por z3nth10n, 24 Enero 2013, 20:46 PM

0 Miembros y 7 Visitantes están viendo este tema.

z3nth10n

Hola pues bueno, quiero hacer algo así:



Y que cuando le hagamos click a una carpeta pues se cambie de directorio:

La ruta la tengo seteada como "Ruta", en un Dim Ruta As String = "aqui iria la ruta seleccionada a otra ves del FolderBrowserDialog"

Necesito por lo menos que me digais como saco la direccion a través de un:  "selecteditemchanged".

Un saludo.




EDITO:

Enconte un codigo que lo hace todo, codigo aquí:

Código (vbnet) [Seleccionar]

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Try
           ' Configuración del FolderBrowserDialog
           With FolderBrowserDialog1

               .Reset() ' resetea

               ' leyenda
               .Description = " Seleccionar una carpeta "
               ' Path " Mis documentos "
               .SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

               ' deshabilita el botón " crear nueva carpeta "
               .ShowNewFolderButton = False
               '.RootFolder = Environment.SpecialFolder.Desktop
               '.RootFolder = Environment.SpecialFolder.StartMenu

               Dim ret As DialogResult = .ShowDialog ' abre el diálogo

               ' si se presionó el botón aceptar ...
               If ret = Windows.Forms.DialogResult.OK Then

                   Dim nFiles As ObjectModel.ReadOnlyCollection(Of String)

                   nFiles = My.Computer.FileSystem.GetFiles(.SelectedPath)

                   MsgBox("Total de archivos: " & CStr(nFiles.Count), _
                                           MsgBoxStyle.Information)
               End If

               .Dispose()

           End With
       Catch oe As Exception
           MsgBox(oe.Message, MsgBoxStyle.Critical)
       End Try
   End Sub


Si tengo alguna duda, pues pregunto. :)




Tengo una duda:

Código (vbnet) [Seleccionar]

               If ret = Windows.Forms.DialogResult.OK Then

                   Dim nFiles As ObjectModel.ReadOnlyCollection(Of String)

                   nFiles = My.Computer.FileSystem.GetFiles(.SelectedPath)

                   MsgBox("Total de archivos: " & CStr(nFiles.Count), _
                                           MsgBoxStyle.Information)
               End If


Lo que quiero hacer es setear la direccion desde aqui, pero no tengo ni idea, porque nunca maneje este campo.

Un saludo.

Interesados hablad por Discord.

Eleкtro

#1
Cita de: Seazoux en 24 Enero 2013, 20:46 PMLo que quiero hacer es setear la direccion desde aqui, pero no tengo ni idea, porque nunca maneje este campo.

Código (vbnet) [Seleccionar]
Dim Folder As String = FBD.SelectedPath ' Aquí tienes "la dirección"

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

       Dim FBD As New FolderBrowserDialog
       FBD.Description = " Seleccionar una carpeta "
       FBD.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

       Dim Resultado As DialogResult = FBD.ShowDialog
       If Resultado = Windows.Forms.DialogResult.OK Then
           Dim Folder As String = FBD.SelectedPath ' Aquí tienes "la dirección"
           MsgBox("Carpeta seleccionada: " & vbnewline & Folder)
       End If

       FBD.Dispose()

   End Sub








z3nth10n

#2
Cita de: EleKtro H@cker en 25 Enero 2013, 09:42 AM
Código (vbnet) [Seleccionar]
Dim Folder As String = FBD.SelectedPath ' Aquí tienes "la dirección"

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

       Dim FBD As New FolderBrowserDialog
       FBD.Description = " Seleccionar una carpeta "
       FBD.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

       Dim Resultado As DialogResult = FBD.ShowDialog
       If Resultado = Windows.Forms.DialogResult.OK Then
           Dim Folder As String = FBD.SelectedPath ' Aquí tienes "la dirección"
           MsgBox("Carpeta seleccionada: " & vbnewline & Folder)
       End If

       FBD.Dispose()

   End Sub


Gracias por ese c&p oculto xD

Un duda, y si quiero setear una variable general desde un sub nivel? Es decir desde el "If Resultado = Windows.Forms.DialogResult.OK Then" poner una variable general que valga tambien para: "Dim Files As Array = IO.Directory.GetFiles(Folder, "*", IO.SearchOption.TopDirectoryOnly)"

Un saludo.

Interesados hablad por Discord.

Eleкtro

#3
Cita de: Seazoux en 25 Enero 2013, 16:36 PM
Un duda, y si quiero setear una variable general desde un sub nivel? Es decir desde el "If Resultado = Windows.Forms.DialogResult.OK Then" poner una variable general que valga tambien para: "Dim Files As Array = IO.Directory.GetFiles(Folder, "*", IO.SearchOption.TopDirectoryOnly)"

Eing?

No se si te he entendido muy bien...

Las variables declaradas dentro de un sub, se quedan en el sub.

Ya te dije que leyeses los tipos de variables y declaraciones.

EDITO: Todas las variables que vayas a usar en más de un sub/ocasión las deberías declarar fuera de los subs... ejemplo:

class

Public putavariable as string

form load sub
 putavariable = "putovalor"
 sub1()
end sub

sub1
 msgbox(putavariable)
end sub

end class


xD saludos.








z3nth10n

#4
Cita de: EleKtro H@cker en 25 Enero 2013, 16:46 PM
Eing?

No se si te he entendido muy bien...

Las variables declaradas dentro de un sub, se quedan en el sub.

Ya te dije que leyeses los tipos de variables y declaraciones.

EDITO: Todas las variables que vayas a usar en más de un sub/ocasión las deberías declarar fuera de los subs... ejemplo:

class

Public putavariable as string

form load sub
 putavariable = "putovalor"
 sub1()
end sub

sub1
 msgbox(putavariable)
end sub

end class


xD saludos.

Y como lo puedo pasar de form a form? xD Me refiero a la putavariable xD

Interesados hablad por Discord.

Eleкtro

Cita de: Seazoux en 25 Enero 2013, 18:15 PM
Y como lo puedo pasar de form a form? xD Me refiero a la putavariable xD

Código (vbnet) [Seleccionar]
Public Shared puta_variable As String = "Elektro H@cker"

MsgBox(Form1.puta_variable)


saludos








z3nth10n

Cita de: EleKtro H@cker en 25 Enero 2013, 18:34 PM
Código (vbnet) [Seleccionar]
Public Shared puta_variable As String = "Elektro H@cker"

MsgBox(Form1.puta_variable)


saludos

Bueno, pues llevo con un error putandome de hay la variable xD un ratillo.

Necesito declarar una primera variable para que se pueda abrir de hay tu ultimo codigo, pero cuando se va abrir el form 2 me suelta este error:



Y luego pa colmo, necesito guardarlo en un archivo dat o dentro del mismo exe para que la proxima vez se guarde y se ejecute esa direccion.

Es decir, necesita una direccion base para abrir y  luego cargar otra direccion que seria la guardada de la ultima vez.  :-\




Y a ver si me ayudas con el paquete en castellano  :-\ :-\

Interesados hablad por Discord.

Eleкtro

#7
El error está más que claro, la variable "Folder" está vacía, y en la imagen lo puedes ver en los autos:   "Folder > value Nothing"

¿Porque no te fijas en lo que estás haciendo?

1. declaras la variable en el form2
2. no le das ningún valor a esa NUEVA variable
3. intentas usar la variable en el método "getfiles" (pero la variable no contiene ningún valor, así que KABOOM!)

Te he explicado como usar las variables en otras class.

1. declaras la variable en EL PRIMER FORM (form1.vb)
2. la usas así en el resto de forms:   msgbox(form1.mivariable)

PD: O puedes hacer un form, lo llamas "Variables Globales.vb" y ahi metes las p*tas variables que desees, tienes un ejemplo de eso en el post de los snippets (sintaxis > global variables) ahí tienes un ejemplo bueno.






Cita de: Seazoux en 25 Enero 2013, 19:40 PMnecesito guardarlo en un archivo dat o dentro del mismo exe para que la proxima vez se guarde y se ejecute esa direccion.

Olvídate de crear archivos innecesarios para guardar "opciones" o cosas así, esto no es Batch, todo es más simple.

Debes crear una setting en tu proyecto, y luego es tán sencillo como hacer... :

Código (vbnet) [Seleccionar]
my.settings.MiOpcion = Folder
my.settings.save()


Código (vbnet) [Seleccionar]
form1 load sub
  msgbox(my.settings.MiOpcion) ' la última ruta guardada...
end sub


EDITO: Bueno en realidad esto se guarda en el archivo settings.cfg del programa, pero eso ya es otra cosa xD.





Si realmente quieres aprender te va a ser mucho más dificil si te modificas el lenguaje de la IDE al castellano, más que nada porque no vas a encontrar referencias en castellano ni ayuda en ningún sitio cuando tengas un problema en concreto sobre la IDE y necesites buscar un código o solución en Google, todos los terminos son en ingles, y hay que aprender a usar en inglés, déjate eso para cuando sepas mejor las cosas.

saludos








z3nth10n

#8
Cita de: EleKtro H@cker en 25 Enero 2013, 20:04 PM
El error está más que claro, la variable "Folder" está vacía.

Me pregunto porque a veces seré tan cazurro. xD
La verdad que lo imagine, pero me faltaba un puto Form1. xDDD

En fin

Ahora tengo que hacer que se actualice el ListBox cuando lo ejecute en el FolderBrowserDialog, porque no hace nada. Le echare un vistazo igualmente.  :xD

Cita de: EleKtro H@cker en 25 Enero 2013, 20:04 PM
Si realmente quieres aprender te va a ser mucho más dificil si te modificas el lenguaje de la IDE al castellano, más que nada porque no vas a encontrar referencias en castellano ni ayuda en ningún sitio cuando tengas un problema en concreto sobre la IDE y necesites buscar un código o solución en Google, todos los terminos son en ingles, y hay que aprender a usar en inglés, déjate eso para cuando sepas mejor las cosas.

saludos

Se bastante ingles o eso creo, y la verdad es que aunque tenga el programa en Español se me da igual, yo lo traduzco al ingles y busco en ingles que es lo que hago xDDD




Hihihihihi, que burraco soy, hay conflicto entre el Folder del Form1 y el del Form2 aunque no lo diga se ve claramente. XD Como hagi para anular el Folder del Form1.Folder y tomar el nuevo folder?

Codigo:
Código (vbnet) [Seleccionar]
Dim Files As Array = IO.Directory.GetFiles(Form1.Folder, "*", IO.SearchOption.TopDirectoryOnly)

Interesados hablad por Discord.

Eleкtro

#9
Cita de: Seazoux en 25 Enero 2013, 20:14 PM
Se bastante ingles o eso creo, y la verdad es que aunque tenga el programa en Español se me da igual, yo lo traduzco al ingles y busco en ingles que es lo que hago xDDD



Yo también se mucho (Inglés leido) y te aseguro que saber no te va a servir de nada cuando empiezas a aprender un programa y necesitas leer tutoriales y manuales,
prueba a aprender Photoshop con la APP en castellano y todos los tutoriales/pasos en Inglés, y me cuentas que tál te fue...

Para usar el VS al Español y sin miedo hay que estar al nivel de Seba123Neo xD






Cita de: Seazoux en 25 Enero 2013, 20:14 PM
hay conflicto entre el Folder del Form1 y el del Form2 aunque no lo diga se ve claramente. XD Como hagi para anular el Folder del Form1.Folder y tomar el nuevo folder?

Codigo:
Código (vbnet) [Seleccionar]
Dim Files As Array = IO.Directory.GetFiles(Form1.Folder, "*", IO.SearchOption.TopDirectoryOnly)

Pero si ya tienes la variable declarada en el form1, ¿Quieres crear la misma variable y con el mismo valor en el form2?


form1
public folder as string
end class

form2
dim folder2 as string = form1.folder
Dim Files As Array = IO.Directory.GetFiles(folder2 , "*", IO.SearchOption.TopDirectoryOnly)