Вопрос

Я работаю над заданием, и мне нужно использовать класс OpenFileDialog, чтобы выбрать файл .txt и вернуть это свойство файла в функцию с именем getFilename ()

Теперь это код, который у меня есть для кнопки, нажмите:

    Private Sub 
    btnSelectFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelectFile.Click

End Sub

Я не понимаю, как я получаю файл, который я выбрал в свою функцию. Это код для моей функции.

     Private Function GetFileName() As String

     Dim OpenDonorList As New OpenFileDialog

    OpenDonorList.Filter = "txt files (*.txt)|*.txt"
    OpenDonorList.Title = "Save File As"
    OpenDonorList.InitialDirectory = "C:\"
    OpenDonorList.RestoreDirectory = True

    DialogResult = OpenDonorList.ShowDialog

    If DialogResult = Windows.Forms.DialogResult.OK Then



    Return ?
    End Function

Как получить свой файл OpendonorList .txt в мою функцию getFilename ()?

Спасибо!

Это было полезно?

Решение

Мне кажется, что вы не уверены, как вызвать функцию из кнопки нажатия (я могу ошибаться). Поэтому сначала, когда вы вызовуте функцию, она всегда должна возвращать значение (из ключевого слова возврата).

Вы настроили функцию, которая отображает OpenFileDialog - так какое значение она должна вернуть? Он должен вернуть путь и имя файла. Это можно просто хранить в строке.

Таким образом, немного настройки вашего кода может это исправить.

Вот пример:

В коде вашей кнопки вы хотите вызвать фактическую функцию плюс переменная для хранения имени пути (как выше строки) просто:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim thePathName As String = GetFileName()
    MessageBox.Show(thePathName)
End Sub

Теперь в функции вы хотите добавить возврат. Существует проблема с вашим промежуточным (без конца, если). Если результат в порядке, верните имя пути. В противном случае верните NULL и вызовите ошибку (вы можете изменить это):

Private Function GetFileName() As String

    Dim OpenDonorList As New OpenFileDialog

    OpenDonorList.Filter = "txt files (*.txt)|*.txt"
    OpenDonorList.Title = "Save File As"
    OpenDonorList.InitialDirectory = "C:\"
    OpenDonorList.RestoreDirectory = True

    DialogResult = OpenDonorList.ShowDialog

    If DialogResult = Windows.Forms.DialogResult.OK Then
        Return OpenDonorList.FileName
    Else
        MessageBox.Show("Error!")
        Return vbNull
    End If

End Function

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

Надеюсь это поможет.

Другие советы

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

If DialogResult = Windows.Forms.DialogResult.OK Then
    Return OpenDonorList.FileName
End If

Я также добавил бы эту строку в настройки окна открытого файла, чтобы убедиться, что можно выбрать только один файл:

OpenDonorList.Multiselect = False
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim fileName As String = GetFileName()
    If (String.IsNullOrEmpty(fileName)) Then
        MessageBox.Show("No file was selected.")
    Else
        MessageBox.Show(String.Format("You selected file: {0}", fileName))
    End If
End Sub

Private Function GetFileName() As String
    Dim openDonorList As New OpenFileDialog()
    With openDonorList
        .Filter = "txt files (*.txt)|*.txt"
        .Title = "Save File As"
        .InitialDirectory = "C:\"
        .RestoreDirectory = True
    End With
    Dim result As DialogResult = openDonorList.ShowDialog()
    If result = Windows.Forms.DialogResult.OK Then Return openDonorList.FileName
    Return Nothing
End Function
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top