最近文件列表的位置 vb.net
location of recent files list vb.net
我希望将最近的文件列表添加到我正在编写的应用程序中。
我正在考虑将最近的文件添加到 xml 文件中。
这个文件应该存储在哪里?
以及如何从代码中调用它?
我想 xml 将存储在安装应用程序的同一文件夹中,但并不是每个人都会将应用程序安装在同一目录中。
有没有办法以这样一种方式对其进行编码,使其始终存储在与安装应用程序相同的文件夹中?
非常感谢!
这里是一个使用 My.Settings
的例子。它要求您打开项目属性的 Settings 页面并添加一个名为 RecentFiles
的 StringCollection
类型的设置以及一个 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
,直到您为其分配内容。如果您想避免在代码中执行此操作,请执行以下操作。
- 添加设置后,单击
Value
字段并单击带省略号 (...) 的按钮进行编辑。
- 向编辑器添加任何文本并单击
OK
。请注意,已添加一些 XML,其中包括您添加的项目。
- 再次单击编辑按钮 (...) 并删除添加的项目。请注意,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
将十个文件添加到列表中,然后随着我添加更多文件,它们开始从列表末尾消失。如果我重新添加一个已经在列表中的,它就会移到顶部。如果我关闭该应用程序并再次 运行,该列表仍然存在。
我希望将最近的文件列表添加到我正在编写的应用程序中。 我正在考虑将最近的文件添加到 xml 文件中。
这个文件应该存储在哪里? 以及如何从代码中调用它?
我想 xml 将存储在安装应用程序的同一文件夹中,但并不是每个人都会将应用程序安装在同一目录中。
有没有办法以这样一种方式对其进行编码,使其始终存储在与安装应用程序相同的文件夹中?
非常感谢!
这里是一个使用 My.Settings
的例子。它要求您打开项目属性的 Settings 页面并添加一个名为 RecentFiles
的 StringCollection
类型的设置以及一个 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
,直到您为其分配内容。如果您想避免在代码中执行此操作,请执行以下操作。
- 添加设置后,单击
Value
字段并单击带省略号 (...) 的按钮进行编辑。 - 向编辑器添加任何文本并单击
OK
。请注意,已添加一些 XML,其中包括您添加的项目。 - 再次单击编辑按钮 (...) 并删除添加的项目。请注意,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
将十个文件添加到列表中,然后随着我添加更多文件,它们开始从列表末尾消失。如果我重新添加一个已经在列表中的,它就会移到顶部。如果我关闭该应用程序并再次 运行,该列表仍然存在。