Visual Basic.NET - Recoger datos desde un fichero de texto con separador en un combobox

 
Vista:
Imágen de perfil de jose
Val: 42
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Recoger datos desde un fichero de texto con separador en un combobox

Publicado por jose (33 intervenciones) el 01/05/2020 17:57:36
Buenas,

Estoy recogiendo datos de un archivo que se añade a un combobox. Dichos datos son rutas de directorios para abrirlos en un explorador al seleccionar el combobox.

El problema es que he de colocar la ruta completa ejemplo "C:\Users\Administrator\Documents\Bluetooth Exchange Folder"

Tenía pensado que en el archivo de texto o bien aparezca
"Bluetooth Exchange Folder # C:\Users\Administrator\Documents\Bluetooth Exchange Folder"
Y que en el combobox aparzca la parte izquierda, pero que en el explorador abra la parte derecha
o en el combobox que aparezca la parte izquierda de la ruta apartir del ultimo "\".

No he conseguido averiguar como hacer ninguno de estas dos opciones. Se que es algo sencillo pero no veo la forma.

AL inicio cargo una función que carga el combobox

1
2
3
4
5
Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'Funcion Combobox Carpeta
    Carpetas()
 
End Sub

La función lee un archivo, que contendrá directorios y que al seleccionar en el combobox abir el explorador con el directorio indicado en el archivo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub Carpetas()
 
    Dim strCarpeta As String = "%AppData%\Ascii\"
    strCarpeta = Environment.ExpandEnvironmentVariables(strCarpeta)
    Dim StrFileCarpetas As String = strCarpeta & "Carpetas.txt"
 
    Try
        If Not Directory.Exists(strCarpeta) Then
            Directory.CreateDirectory(strCarpeta)
        End If
 
        If Not File.Exists(StrFileCarpetas) Then
            File.Create(StrFileCarpetas)
        End If
 
 
    CbCarpetas.Items.Clear()
        'Dim strFile As String = StrFileCarpetas
        Dim readfileCombo As New StreamReader(StrFileCarpetas)
 
    'Read all lines and add them into Combobox
        Do Until readfileCombo.EndOfStream = True
            CbCarpetas.Items.Add(readfileCombo.ReadLine)
        Loop
 
        readfileCombo.Close()
    Catch es As Exception
    End Try
End Sub

metodo que abré el explorador al seleccionar un item del combobox.

1
2
3
4
5
6
7
8
9
10
Private Sub CbCarpetas_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CbCarpetas.SelectedIndexChanged
    Dim strCarpeta As String
    strCarpeta = CbCarpetas.SelectedItem
    If Not Directory.Exists(strCarpeta) Then
        MsgBox("No existe", MsgBoxStyle.Information)
    Else
        Process.Start("explorer.exe", strCarpeta)
    End If
 
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de jose
Val: 42
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Recoger datos desde un fichero de texto con separador en un combobox

Publicado por jose (33 intervenciones) el 01/05/2020 18:59:17
He visto este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Function Between(value As String, a As String,
                 b As String) As String
    ' Get positions for both string arguments.
    Dim posA As Integer = value.IndexOf(a)
    Dim posB As Integer = value.LastIndexOf(b)
    If posA = -1 Then
        Return ""
    End If
    If posB = -1 Then
        Return ""
    End If
 
    Dim adjustedPosA As Integer = posA + a.Length
    If adjustedPosA >= posB Then
        Return ""
    End If
 
    ' Get the substring between the two positions.
    Return value.Substring(adjustedPosA, posB - adjustedPosA)
End Function
 
Function Before(value As String, a As String) As String
    ' Get index of argument and return substring up to that point.
    Dim posA As Integer = value.IndexOf(a)
    If posA = -1 Then
        Return ""
    End If
    Return value.Substring(0, posA)
End Function
 
Function After(value As String, a As String) As String
    ' Get index of argument and return substring after its position.
    Dim posA As Integer = value.LastIndexOf(a)
    If posA = -1 Then
        Return ""
    End If
    Dim adjustedPosA As Integer = posA + a.Length
    If adjustedPosA >= value.Length Then
        Return ""
    End If
    Return value.Substring(adjustedPosA)
End Function
 
Sub Main()
    Dim test As String = "DEFINE:A=TWO"
    ' Test the Between Function.
    Console.WriteLine(Between(test, "DEFINE:", "="))
    Console.WriteLine(Between(test, ":", "="))
 
    ' Test the Before Function.
    Console.WriteLine(Before(test, ":"))
    Console.WriteLine(Before(test, "="))
 
    ' Test the After Function.
    Console.WriteLine(After(test, ":"))
    Console.WriteLine(After(test, "DEFINE:"))
    Console.WriteLine(After(test, "="))
End Sub


Haciendo un cambio en en esta parte el código, he conseguido que en el combobox se vea la parte derecha a partir de #:

1
2
3
4
5
6
7
8
9
CbCarpetas.Items.Clear()
 
Dim readfileCombo As New StreamReader(StrFileCarpetas)
 
'Read all lines and add them into Combobox
Do Until readfileCombo.EndOfStream = True
    Dim StrLine as String = readfileCombo.ReadLine   ' AÑADIDO
    CbCarpetas.Items.Add(Before(StrLine, "#")) ' AÑADIDO
Loop

Pero no he conseguido que al seleccionar me abra la dirección con After(StrLine, "#")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Recoger datos desde un fichero de texto con separador en un combobox

Publicado por Phil Rob (1554 intervenciones) el 01/05/2020 22:04:57
Hola Jose,

No comprendo bien el problema ...

Puedes enviar un parte del archivo Carpetas.txt (algunas lineas, para mi ver la structura) ?
Y porque ejecutas Process.Start("explorer ... y no ejecutar un OpenFileDiag ?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jose
Val: 42
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Recoger datos desde un fichero de texto con separador en un combobox

Publicado por jose (33 intervenciones) el 02/05/2020 03:51:59
Es un archivo donde añado rutas de carpetas: Pongo el nombre que le quiero dar, el separador y la ruta. Ejemplo

Documentos # C:\Users\joserodriguezan\Documents

Lo que quiero es añadir al combobox Documento pero que Process.Start("explorer abrá la ruta en el explorador

El motivo de utilizarlo así es que hay una gran cantidad de carpetas, donde se guardan datos diferentes. el txt puedes exportarlos a varios pcs relleno manualmente a otros pc que tengan el programa. Pero no quiero que se vea la ruta, sólo una descripción.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Recoger datos desde un fichero de texto con separador en un combobox

Publicado por Phil Rob (1554 intervenciones) el 02/05/2020 10:50:03
Hola,

No se si he comprendido bien paro he hecho un programa de prueba.

He escrito un fichero Carpetas.TXT :

CarpetaTXT

Este fichero es leído y el Explorer es llamado cuando seleccionamos un carpeta en el ComboBox.
Miras la vidéo : https://www.dropbox.com/s/y22lkmn6ziga0yc/CarpetasTXT.mp4?dl=0

Adjunto mi proyecto para ti testar.

Espero que este te ayudará ...

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de jose
Val: 42
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Recoger datos desde un fichero de texto con separador en un combobox

Publicado por jose (33 intervenciones) el 02/05/2020 19:21:36
Muchas gracias Phil. Ese código me ha servido de mucha ayuda !!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar