最近文件列表的位置 vb.net

location of recent files list vb.net

我希望将最近的文件列表添加到我正在编写的应用程序中。 我正在考虑将最近的文件添加到 xml 文件中。

这个文件应该存储在哪里? 以及如何从代码中调用它?

我想 xml 将存储在安装应用程序的同一文件夹中,但并不是每个人都会将应用程序安装在同一目录中。

有没有办法以这样一种方式对其进行编码,使其始终存储在与安装应用程序相同的文件夹中?

非常感谢!

这里是一个使用 My.Settings 的例子。它要求您打开项目属性的 Settings 页面并添加一个名为 RecentFilesStringCollection 类型的设置以及一个 ToolStripMenuItem文字 "Recent".

Imports System.Collections.Specialized

Public Class Form1

    Private Const MAX_RECENT_FILES As Integer = 10

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        LoadRecentFiles()
    End Sub

    Private Sub LoadRecentFiles()
        Dim recentFiles = My.Settings.RecentFiles

        'A StringCollection setting will be Nothing by default, unless you edit it in the Settings designer.
        If recentFiles Is Nothing Then
            My.Settings.RecentFiles = New StringCollection()
            recentFiles = My.Settings.RecentFiles
        End If

        'Get rid of any existing menu items.
        RecentToolStripMenuItem.DropDownItems.Clear()

        'Add a menu item for each recent file.
        If recentFiles.Count > 0 Then
            RecentToolStripMenuItem.DropDownItems.AddRange(recentFiles.Cast(Of String)().
                                                                       Select(Function(filePath) New ToolStripMenuItem(filePath,
                                                                                                                       Nothing,
                                                                                                                       AddressOf RecentFileMenuItems_Click)).
                                                                       ToArray())
        End If
    End Sub

    Private Sub UpdateRecentFiles(filePath As String)
        Dim recentFiles = My.Settings.RecentFiles

        'If the specified file is already in the list, remove it from its old position.
        If recentFiles.Contains(filePath) Then
            recentFiles.Remove(filePath)
        End If

        'Add the new file at the top of the list.
        recentFiles.Insert(0, filePath)

        'Trim the list if it is too long.
        While recentFiles.Count > MAX_RECENT_FILES
            recentFiles.RemoveAt(MAX_RECENT_FILES)
        End While

        LoadRecentFiles()
    End Sub

    Private Sub RecentFileMenuItems_Click(sender As Object, e As EventArgs)
        Dim menuItem = DirectCast(sender, ToolStripMenuItem)
        Dim filePath = menuItem.Text

        'Open the file using filePath here.
    End Sub

End Class

请注意,Load 事件处理程序包含一些代码,以允许类型 StringCollection 的设置将是 Nothing,直到您为其分配内容。如果您想避免在代码中执行此操作,请执行以下操作。

  1. 添加设置后,单击 Value 字段并单击带省略号 (...) 的按钮进行编辑。
  2. 向编辑器添加任何文本并单击 OK。请注意,已添加一些 XML,其中包括您添加的项目。
  3. 再次单击编辑按钮 (...) 并删除添加的项目。请注意,XML 仍然存在,但您的项目已消失。

XML 代码会导致在首次加载设置时创建 StringCollection 对象,因此您无需在代码中创建对象。

编辑:

我通过添加以下代码对此进行了测试:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Using dialogue As New OpenFileDialog
        If dialogue.ShowDialog() = DialogResult.OK Then
            UpdateRecentFiles(dialogue.FileName)
        End If
    End Using
End Sub

我能够通过 Button 将十个文件添加到列表中,然后随着我添加更多文件,它们开始从列表末尾消失。如果我重新添加一个已经在列表中的,它就会移到顶部。如果我关闭该应用程序并再次 运行,该列表仍然存在。