2013-09-19 3 views
0

Это мой код для чтения txtfile и поместить его в DataGridViewКак получить первую строку из файла в текстовом vb.net

Dim filename As String = String.Empty 
Dim TextLine As String = "" 
Dim SplitLine() As String 


    ofd1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" 
    ofd1.FilterIndex = 2 
    ofd1.RestoreDirectory = True 
    ofd1.Title = "Open Text File" 

    'get the filename of the txt file 
    If ofd1.ShowDialog() = DialogResult.OK Then 
     filename = ofd1.FileName 
    End If 

    'if the filename is existing 
    If System.IO.File.Exists(filename) = True Then 

     Dim objReader As New System.IO.StreamReader(filename) 

     Do While objReader.Peek() <> -1 
      TextLine = objReader.ReadLine() 
      SplitLine = Split(TextLine, ",") 
      dvList.Rows.Add(SplitLine) 
     Loop 

    End If 

Это текстовый файл:

False, 1-305-9097-01-2, 879.75, 122009, fr 
False, 1-305-9097-02-2, 879.75, 122009, fr 
False, 1-305-9097-02-3, 879.75, 122009, fr 
False, 1-305-9097-03-5, 899.75, 122009, fr 

Теперь я хочу получить только первую запись моего txtfile и поместить ее в msgbox, как я могу это сделать?

Я попытался это:

MsgBox(SplitLine.tostring) 

Но выход из этого кода заключается в следующем: System.String []

Спасибо.

+2

Впервые в вашем цикле 'TextLine' содержит первую запись. –

+0

@ DarkCthulhu: Спасибо, сударь, что указал, что я могу использовать splitline, я уже сделал для этого рабочий код, Еще раз спасибо. – Matthew

ответ

1

Вы можете сделать это без 2 отдельных считывателей, поскольку у вас уже есть доступное значение.

Dim objReader As New System.IO.StreamReader(filename) 
Dim lineCount as Integer 'lines read so far in file 

Do While objReader.Peek() <> -1 
    TextLine = objReader.ReadLine() 
    If lineCount = 0 Then msgbox(TextLine) 'will show msgbox in first iteration 
    SplitLine = Split(TextLine, ",") 
    dvList.Rows.Add(SplitLine) 
    lineCount = lineCount + 1 'increment lineCount 
Loop 
+0

Ahh ok sir, Это то, что Я ищу, спасибо за это :) – Matthew

0

Я уже сделал рабочий код для этого, здесь:

Dim msgboxReader As New System.IO.StreamReader(filename) 

    msgbox(msgboxReader.ReadLine()) 

Dim objReader As New System.IO.StreamReader(filename) 

    Do While objReader.Peek() <> -1 
     TextLine = objReader.ReadLine() 
     SplitLine = Split(TextLine, ",") 
     dvList.Rows.Add(SplitLine) 
    Loop 

UPDATE Я просто объявить еще один читатель, чтобы прочитать первую строку только

+0

Как только вы продвигаете читателя по строке, вызывая это, первая запись не будет анализироваться внутри do..while(). –

+0

@DarkCthulhu: См. Мое обновление sir – Matthew

+0

Я не думаю, что вы понимаете. 'dvList' не будет содержать первую запись, если вы вызовете ReadLine() один раз за пределами цикла. –

1

дим сначала как Boolean = True

Редактировать петлю следующим образом:

Do While objReader.Peek() <> -1 
    TextLine = objReader.ReadLine() 
    If First Then MessageBox(TextLine) : First = False 
    SplitLine = Split(TextLine, ",") 
    dvList.Rows.Add(SplitLine) 
Loop 
+0

Ahh Я вижу, Этот код также будет работать для меня, спасибо за этот. – Matthew

+0

чувак, у тебя все еще используется VB6? :) – Maher

+0

Нет, сэр, я ung vb.net, почему? это из-за msgbox? :) – Matthew

Смежные вопросы