Mi sembra che tu non sia sicuro di come chiamare la funzione dal clic del pulsante (potrei sbagliarmi). Quindi prima quando si chiama una funzione, deve sempre restituire un valore (dalla parola chiave di ritorno).
Hai impostato una funzione che visualizza un openfiledialog - quindi quale valore dovrebbe restituire? Dovrebbe restituire un percorso e un nome file. Questo può essere solo archiviato in una stringa varaibile.
Quindi, un po 'di modifiche al tuo codice potrebbe risolverlo.
Ecco un esempio:
Sul codice del tuo pulsante, si desidera chiamare la funzione effettiva più una variabile per archiviare il nome del percorso (come sopra una stringa) semplicemente:
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
Ora, nella funzione che si desidera aggiungere il ritorno. C'è un problema con il tuo IF-Statement (nessuna fine se). Se il risultato è OK, restituisci il nome del percorso. Altrimenti restituisci null e chiama un errore (puoi modificarlo):
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
Nel codice del pulsante è quindi possibile chiamare un'altra routine che utilizza il valore di ThePathName per fare qualcosa, come aprire il file per la lettura. Nell'esempio sopra mostrerà solo una casella di messaggi con il nome del percorso al file selezionato.
Spero che sia di aiuto.