Frage

Ich arbeite an einer Aufgabe und muss eine OpenFiledialog -Klasse verwenden, um eine .txt -Datei auszuwählen und diese Dateinameneigenschaft in eine Funktion namens GetFileName () zurückzugeben.

Dies ist der Code, den ich für meine Schaltfläche habe. Klicken Sie: Klicken Sie auf:

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

End Sub

Ich bin verwirrt darüber, wie ich die Datei bekomme, die ich in meine Funktion ausgewählt habe. Dies ist der Code für meine Funktion.

     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

Wie lasse ich meine OpendonorList -.txt -Datei in meine fileName () -Funktion ()?

Vielen Dank!

War es hilfreich?

Lösung

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.

Andere Tipps

Sie haben bereits den größten Teil des Codes, nur was Sie tun müssen, ist zu verwenden FileName Eigenschaft zur Rückgabe der ausgewählten Datei:

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

Ich würde diese Zeile auch zu den Einstellungen Ihres geöffneten Dateifensters hinzufügen, um sicherzustellen, dass nur eine Datei ausgewählt werden kann:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top