Pregunta

Estoy trabajando en una tarea y necesito usar una clase OpenFileDialog para elegir un archivo .txt y devolver esa propiedad de nombre de archivo a una función llamada getFileName ()

Ahora este es el código que tengo para mi botón Haga clic:

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

End Sub

Estoy confundido en cuanto a cómo obtengo el archivo que seleccioné en mi función. Este es el código para mi función.

     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

¿Cómo obtengo mi archivo .txt .txt OpenDOnorList en mi función getFileName ()?

¡Gracias!

¿Fue útil?

Solución

Me parece que no está seguro de cómo llamar a la función desde el clic del botón (podría estar equivocado). Entonces, primero, cuando llame a una función, siempre debe devolver un valor (de la palabra clave de retorno).

Has configurado una función que muestra un OpenFileDialog, entonces, ¿qué valor debe volver? Debería devolver una ruta y nombre de archivo. Esto se puede almacenar en una variedad de cadena.

Por lo tanto, un poco de ajuste a su código podría solucionarlo.

Aquí hay un ejemplo:

En el código de su botón, desea llamar a la función real más una variable para almacenar el nombre de ruta (como arriba de una cadena) Simplemente:

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

Ahora, en la función que desea agregar la devolución. Hay un problema con su Estado IF (sin fin IF). Si el resultado está bien, devuelva el nombre de la ruta. De lo contrario, devuelva nulo y llame a un error (puede cambiar esto):

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

En el código del botón, puede llamar a otra rutina que usa el valor de ThePathName para hacer algo, como abrir el archivo para leer. En el ejemplo anterior, solo mostrará un cuadro de mensajes con el nombre de ruta al archivo seleccionado.

Espero que esto ayude.

Otros consejos

Ya tienes la mayor parte del código, todo lo que tienes que hacer es usar FileName propiedad para devolver el archivo seleccionado:

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

También agregaría esta línea a la configuración de la ventana de su archivo abierto para asegurarme de que solo se pueda seleccionar un archivo:

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top