سؤال

أنا أعمل على مهمة وأحتاج إلى استخدام فئة OpenFileDialog لاختيار ملف .txt وإرجاع خاصية اسم الملف هذه إلى دالة تسمى getFilename ()

الآن هذا هو الرمز الذي لدي للزر الخاص بي: انقر فوق:

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

End Sub

أنا في حيرة من أمري بشأن كيفية الحصول على الملف الذي اخترته في وظيفتي. هذا هو الرمز لوظيفتي.

     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

كيف يمكنني الحصول على ملف .txt OpendOnorList الخاص بي إلى وظيفة getFilename ()؟

شكرًا!

هل كانت مفيدة؟

المحلول

يبدو لي وكأنك غير متأكد من كيفية استدعاء الوظيفة من الزر النقر (قد أكون مخطئًا). لذلك أولاً عند استدعاء وظيفة ، يجب دائمًا إرجاع قيمة (من الكلمة الرئيسية للعودة).

لقد قمت بإعداد وظيفة تعرض OpenFileDialog - فما هي القيمة التي يجب أن تعود؟ يجب أن يعيد مسار واسم الملف. يمكن تخزين هذا فقط في سلسلة متنوعة.

لذلك ، قد يصلحه قليلاً من التغيير في الكود الخاص بك.

مثال على هيريس:

في رمز الزر الخاص بك ، تريد الاتصال بالوظيفة الفعلية بالإضافة إلى متغير لتخزين اسم المسار (كما هو مذكور أعلاه) ببساطة:

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

الآن ، في الوظيفة التي تريد إضافة العودة. هناك مشكلة في IF-Statement (لا نهاية IF). إذا كانت النتيجة على ما يرام ، فقم بإرجاع اسم المسار. وإلا فإن إرجاع فارغ واتصل بخطأ (يمكنك تغيير هذا):

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

في رمز الزر ، يمكنك بعد ذلك استدعاء روتين آخر يستخدم قيمة thePathName للقيام بشيء ما ، مثل فتح الملف للقراءة. في المثال أعلاه ، سيعرض فقط مراسلة الرسائل مع اسم المسار إلى الملف المحدد.

أتمنى أن يساعدك هذا.

نصائح أخرى

لديك بالفعل معظم الكود ، كل ما عليك فعله هو استخدام FileName خاصية لإرجاع الملف المحدد:

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

أود أيضًا إضافة هذا السطر إلى إعدادات نافذة الملف المفتوحة للتأكد من تحديد ملف واحد فقط:

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top