Загрузить из файла в список? - PullRequest
0 голосов
/ 08 июня 2011

Так что в моей программе я пытаюсь сделать так, чтобы при нажатии кнопки открывалось всплывающее окно «выбрать файл» (где пользователь может выбрать текстовый файл), а затем после того, как пользователь выбрал его, программа автоматически загрузит каждыйстрока текстового файла в список.

Но я изучал его, и единственное, что мне удалось найти, - это файл> открыть файл.Так как холодно я заставляю его открывать «открытый» диалог нажатием кнопки

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

и у меня нет никакого кода, чтобы показать вам, так как остальная часть моей программы не имеет отношения к этому

Ответы [ 3 ]

2 голосов
/ 08 июня 2011
    Using FD As New OpenFileDialog()
        FD.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
        If FD.ShowDialog = Windows.Forms.DialogResult.OK Then
            Listbox1.Items.Clear
            ListBox1.Items.AddRange(IO.File.ReadAllLines(FD.FileName))
        End If
    End Using

РЕДАКТИРОВАТЬ: Ответ на комментарий:

Если вы можете использовать LINQ, то это одна строка кода, чтобы прочитать все строки из списка и записать его в файл:

Сохранение с использованием SaveFileDialog и LINQ

    Using FD As New SaveFileDialog()
        FD.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
        If FD.ShowDialog = Windows.Forms.DialogResult.OK Then
            IO.File.WriteAllLines(fd.filename, (From p As String In ListBox1.Items Select p).ToArray)
        End If
    End Using

Если вы не можете использовать LINQ, вы можете сделать это вместо этого:

Сохранить с помощью SaveFileDialog и FOR / EACH

     Using FD As New SaveFileDialog()
        FD.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
        If FD.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim FileContent As String = ""
            For Each i As String In ListBox1.Items
                FileContent &= i & vbCrLf
            Next
            IO.File.WriteAllText(FD.FileName, FileContent)
        End If
    End Using 
0 голосов
/ 08 июня 2011

OpenFileDialog от MSDN :

   Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim myStream As Stream = Nothing
        Dim openFileDialog1 As New OpenFileDialog()

        openFileDialog1.InitialDirectory = "c:\"
        openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
        openFileDialog1.FilterIndex = 2
        openFileDialog1.RestoreDirectory = True

        If openFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
            Try
                myStream = openFileDialog1.OpenFile()
                If (myStream IsNot Nothing) Then
                    ' Insert code to read the stream here.
                End If
            Catch Ex As Exception
                MessageBox.Show("Cannot read file from disk. Original error: " & Ex.Message)
            Finally
                ' Check this again, since we need to make sure we didn't throw an exception on open.
                If (myStream IsNot Nothing) Then
                    myStream.Close()
                End If
            End Try
        End If
    End Sub

Как видно из комментариев, вы можете прочитать поток после того, как пользователь открыл файл. Затем вы можете прочитать этот поток, используя, например, StreamReader . Это даст вам данные в файле, выбранном пользователем. В зависимости от того, что вы хотите, вы можете затем проанализировать эти данные и добавить их в список.

0 голосов
/ 08 июня 2011

По сути, здесь есть пара частей. Во-первых, вы хотите создать диалоговое окно «Открыть файл», которое запрашивает у пользователя, где находится файл. Вот как вы это делаете:

http://www.homeandlearn.co.uk/net/nets4p6.html

Далее, вы хотите читать текстовый файл построчно в ваш список. Вот как вы читаете свой текстовый файл (вам нужно будет изменить код, чтобы он добавил строки в список вместо того, чтобы делать Console.WriteLine:

http://msdn.microsoft.com/en-us/library/db5x7c0d.aspx

...