Principales respuestas
No puedo localizar la linea correcta y mostrarla en una etiqueta

Pregunta
-
Hola tengo un problema al querer mostrar unos datos de un archivo de texto.
Primero lo que hago es con un combobox seleccionar el texto que quiero localizar dentro del archivo de texto, despues trato de desplegarlo en una etiqueta para que sea mostrado en mi pantalla ese mismo texto, pero lo que encuentro en el desarrollo es que siempre localiza en el archivo de texto una linea abajo y es lo que me muestra por ejemplo:
Busco una linea que contenga el texto C1, va al archivo y me localiza y muestra en la forma la siguiente linea o sea C2, esta es la rutina que tengo actualmente.
Private Sub ComboBox6_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox6.SelectedIndexChanged
Dim Xread As System.IO.StreamReader
Dim LineNumber As Integer
Dim nthLine As String = Nothing
Dim n As Integer
Try
If ModSel = "041802" Then
Xread = File.OpenText("J:\ICT_Files\041802_BOM_REV.txt")
Do Until Xread.EndOfStream
If Xread.ReadLine.Contains(ComboBox6.Text) = True Then Exit Do
'Label13.Text = Xread.ReadLine & vbCrLf
End If
Loop
Label13.Text = Xread.ReadLine & vbCrLf
Xread.Close()
' End If
End Sub
Private Sub ComboBox7_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox7.SelectedIndexChanged
If ComboBox7.Text = "041802" Then
ModSel = ComboBox7.Text
End If
End SubSaludos y espero que me puedan ayudar ya que creo que es algo un poco sencillo pero apenas estoy empezando en esto.
Respuestas
-
Puedes hacer lo mismo utilizando el método ReadAllLines():
Private Sub ComboBox6_SelectionChangeCommitted(sender As Object, e As EventArgs) If ModSel = "041802" Then Label13.Text = File.ReadAllLines("J:\ICT_Files\041802_BOM_REV.txt", Encoding.Default). Where(Function(x) x.ToUpper.Contains(ComboBox6.Text.ToUpper)).FirstOrDefault() End If End Sub
No olvides indicar el espacio de nombres: Imports System.Linq
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Propuesto como respuesta Joyce_ACModerator lunes, 12 de diciembre de 2016 19:24
- Marcado como respuesta Joyce_ACModerator viernes, 16 de diciembre de 2016 15:52
Todas las respuestas
-
Eliminen esto. O desmarquen, así lo elimino yo.
- Propuesto como respuesta Joyce_ACModerator viernes, 9 de diciembre de 2016 15:40
- Editado walter_5 jueves, 15 de diciembre de 2016 0:31
- Votado como útil Joyce_ACModerator viernes, 16 de diciembre de 2016 15:49
-
Buenos días,
Al realizar la evaluación del contenido de la cadena indicada el readline consume dicha línea, por lo que al tratar de asignar el valor al label será la línea siguiente, por lo tanto, te aconsejo que crees una variable le asignes el valor del readline y trabajes con dicha variable.
-
Puedes hacer lo mismo utilizando el método ReadAllLines():
Private Sub ComboBox6_SelectionChangeCommitted(sender As Object, e As EventArgs) If ModSel = "041802" Then Label13.Text = File.ReadAllLines("J:\ICT_Files\041802_BOM_REV.txt", Encoding.Default). Where(Function(x) x.ToUpper.Contains(ComboBox6.Text.ToUpper)).FirstOrDefault() End If End Sub
No olvides indicar el espacio de nombres: Imports System.Linq
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Propuesto como respuesta Joyce_ACModerator lunes, 12 de diciembre de 2016 19:24
- Marcado como respuesta Joyce_ACModerator viernes, 16 de diciembre de 2016 15:52