【问题标题】:Open Multiple files in File Dialog Using VB使用 VB 在文件对话框中打开多个文件
【发布时间】:2020-05-12 03:38:29
【问题描述】:

在使用VB的windows应用程序中,我需要从特定路径依次打开三个xml文件。如果选择了第一个 xml 文件,则会弹出下一个 xml 的文件对话框。

我尝试了以下代码,但它是用于一起选择文件(即,它的工作方式类似于 shift + 选择文件)。但我不希望以这种方式,我需要一个接一个地选择文件。如果选择了第一个 xml,则会弹出文件对话框以选择下一个文件。像这样我需要选择三个文件。完成后,文件对话框将关闭。

''''

  Private Sub SystemDescriptionToolStripMenuItem_Click()

      OpenFileDialog1.Filter = "All Files *.xml | *.xml"
      OpenFileDialog1.MultiSelect = True
      OpenFileDialog1.InitialDirectory = "D:\"
      OpenFileDialog1.Title = "Select description files"
      OpenFileDialog1.ShowDialog()

  End Sub

''''

【问题讨论】:

  • 如果有一个基本的代码结构可以多次执行一个动作。
  • 你真的不想要MultiSelect = True。您只想让用户一次选择一个。
  • @Mary 如何根据第一个 xml 的选择更改代码,然后弹出文件对话框以选择下一个 xml,然后为第三个选择下一个。
  • 正如我所暗示的,您需要使用代码结构来多次执行相同的操作。你通常如何多次做某事?它是最基本的编程概念之一,因此,如果您不知道,您需要停下手头的工作,通过初学者教程学习基础知识。

标签: vb.net openfiledialog


【解决方案1】:

在对话框中使用单选(默认)

Private Sub SystemDescriptionToolStripMenuItem_Click()
    OpenFileDialog1.Filter = "All Files *.xml | *.xml"
    OpenFileDialog1.InitialDirectory = "D:\"
    OpenFileDialog1.Title = "Select description file"
    For i = 1 To 3
        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
            ProcessXMLFile(OpenFileDialog1.FileName)
        Else
            MessageBox.Show($"Error on File #{i}. Try Again")
            Exit Sub
        End If
    Next
End Sub

Private Sub ProcessXMLFile(path As String)
    'Your code to process the file
End Sub

要使用多选,请指示用户在单击对话框中的文件时按住 Ctrl 键。

Private Sub SystemDescriptionToolStripMenuItem_Click()
    OpenFileDialog1.Filter = "All Files *.xml | *.xml"
    OpenFileDialog1.Multiselect = True
    OpenFileDialog1.InitialDirectory = "D:\"
    OpenFileDialog1.Title = "Select description file"
    Dim files(2) As String
    If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
        files = OpenFileDialog1.FileNames
        For Each file In files
            ProcessXMLFile(file)
        Next
    Else
        MessageBox.Show($"Error on selecting files")
    End If
End Sub

【讨论】:

  • 非常感谢您的热心帮助!我是这样尝试的
  • 接受答案也让人们知道您不需要任何进一步的帮助,而无需他们打开线程。没有被接受的答案的问题会显示一个带有绿色轮廓的框,而那些已经接受答案的问题会显示一个填充为绿色的框。对于那些在这个网站上回答很多问题的人来说,知道哪些问题不需要进一步的信息可以节省很多时间。
  • @RakeshRadhakrishnan 如果它解决了您的问题,请通过单击答案左侧的复选标记(对勾标记)来接受我的答案。它不仅可以帮助未来的读者,还可以为您赢得一些代表。
猜你喜欢
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多