Domanda

Sto lavorando a un incarico e devo utilizzare una classe OpenFileDialog per scegliere un file .txt e restituire quella proprietà Nome file in una funzione chiamata getFileName ()

Ora questo è il codice che ho per il mio clic sul pulsante:

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

End Sub

Sono confuso su come ottenere il file che ho selezionato nella mia funzione. Questo è il codice per la mia funzione.

     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

Come posso ottenere il mio file OpendOnOrList .txt alla mia funzione getFileName ()?

Grazie!

È stato utile?

Soluzione

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.

Altri suggerimenti

Hai già la maggior parte del codice, tutto ciò che devi fare è usare FileName Proprietà per restituire il file selezionato:

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

Vorrei anche aggiungere questa riga alle impostazioni della finestra del file aperto per assicurarmi che sia possibile selezionare un solo file:

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top