Es scheint mir, als ob Sie sich nicht sicher sind, wie Sie die Funktion vom Schaltflächenklick aufrufen (ich könnte mich irren). Wenn Sie also eine Funktion aufrufen, muss es immer einen Wert zurückgeben (aus dem Schlüsselwort der Rückgabe).
Sie haben eine Funktion eingerichtet, die einen OpenFiledialog anzeigt - welchen Wert sollte sie zurückgeben? Es sollte einen Pfad und einen Dateinamen zurückgeben. Dies kann nur in einem String -Varaible gespeichert werden.
Ein bisschen Optimierung in Ihren Code könnte es also beheben.
Hier ist ein Beispiel:
Auf Ihrem Schaltflächencode möchten Sie die tatsächliche Funktion plus eine Variable aufrufen, um den Pfadnamen (wie oben einer Zeichenfolge) einfach zu speichern:
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
In der Funktion möchten Sie nun die Rückgabe hinzufügen. Es gibt ein Problem mit Ihrer Ifatement (kein Ende, wenn). Wenn das Ergebnis in Ordnung ist, geben Sie den Pfadnamen zurück. Andernfalls geben Sie NULL zurück und rufen Sie einen Fehler auf (Sie können dies ändern):
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
Im Schaltflächencode können Sie eine andere Routine aufrufen, die den Wert des Pfadnamens verwendet, um etwas zu tun, z. B. die Datei zum Lesen öffnen. Im obigen Beispiel wird nur eine MessageBox mit dem Pfadnamen für die ausgewählte Datei angezeigt.
Hoffe das hilft.