繁体   English   中英

将文件从Listview移到vb.net中的新目录

[英]Move files from Listview to new directory in vb.net

我正在尝试编写一个代码,用户可以在其中将文件添加到列表视图。 然后,必须将这些文件移动到用户指定的位置。 我无法使用的是添加到列表视图的文件的文件路径。 这是用于移动文件的代码:

sPath = My.Settings.DefaultPath & ComboBox1.Text & "\" & ComboBox2.Text & "\"
        If txtOnderwerp.Text = "" Then
            If ComboBox3.Text = "Make your choice..." Then
                MsgBox("Select subject!", MsgBoxStyle.Information)
            Else
                Try
                    For Each item As ListViewItem In ListView1.Items
                        My.Computer.FileSystem.CopyFile(item, sPath & ComboBox3.Text & "\" & item.Text, FileIO.UIOption.AllDialogs)
                        MsgBox("Copy succesfull.", MsgBoxStyle.Information)
                        ListView1.Items.Clear()
                        Me.Close()
                    Next
                Catch ex As Exception
                    MessageBox.Show("Error copying file: " & ex.Message)
                End Try
            End If
        End If

上面的代码指出了一个错误,因为“ item”不是FilsSystem.Copy命令的字符串。 用户可以使用以下代码将文件添加到列表视图:

 Using ofd As New OpenFileDialog
        ofd.Multiselect = True
        If ofd.ShowDialog = DialogResult.OK Then
            For Each fn As String In ofd.FileNames
                Dim fi As New IO.FileInfo(fn)
                Dim icons As Icon = SystemIcons.WinLogo
                Dim li As New ListViewItem(fi.Name, 1)
                If Not (ImageList1.Images.ContainsKey(fi.Extension)) Then
                    icons = System.Drawing.Icon.ExtractAssociatedIcon(fi.FullName)
                    ImageList1.Images.Add(fi.Extension, icons)
                End If
                icons = Icon.ExtractAssociatedIcon(fi.FullName)
                ImageList1.Images.Add(icons)
                ListView1.Items.Add(fi.Name, fi.Extension)
            Next
        End If
    End Using

谢谢安德鲁·莫蒂默(Andrew Mortimer)的建议。

ListView的代码:Dim str(2)As String Dim itm As ListViewItem

    Using ofd As New OpenFileDialog
        ofd.Multiselect = True
        If ofd.ShowDialog = DialogResult.OK Then
            For Each fn As String In ofd.FileNames
                Dim fi As New IO.FileInfo(fn)
                Dim icons As Icon = SystemIcons.WinLogo
                'Dim li As New ListViewItem(fi.Name, 1)
                If Not (ImageList1.Images.ContainsKey(fi.Extension)) Then
                    icons = System.Drawing.Icon.ExtractAssociatedIcon(fi.FullName)
                    ImageList1.Images.Add(fi.Extension, icons)
                End If
                str(0) = fi.Name
                str(1) = fi.FullName
                icons = Icon.ExtractAssociatedIcon(fi.FullName)
                ImageList1.Images.Add(icons)
                itm = New ListViewItem(str)
                ListView1.Items.Add(itm)
            Next
        End If
    End Using

在列表视图中复制项目的代码:

Dim str As String
Dim copyfilename As String
Dim NewDir As String
Try
                    NewDir = My.Settings.DefaultPath & ComboBox1.Text & "\" & ComboBox2.Text & "\" & txtOnderwerp.Text
                    My.Computer.FileSystem.CreateDirectory(NewDir)

                    For Each item As ListViewItem In ListView1.Items
                        copyfilename = item.Text
                        str = item.SubItems.Item(1).Text
                        My.Computer.FileSystem.CopyFile(str, NewDir & "\" & copyfilename)
                        MsgBox("Kopiëren is gelukt.", MsgBoxStyle.Information)
                        ListView1.Items.Clear()
                        Me.Close()
                    Next
                Catch ex As Exception
                    MessageBox.Show("Error: " & ex.Message)
                End Try

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM