Вот пример использования My.Settings
. Требуется открыть страницу Настройки свойств проекта и добавить параметр типа StringCollection
с именем RecentFiles
, а также ToolStripMenuItem
с текстом «Недавние».
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
, а затем они начали опускаться в конце списка, как я добавил еще. Если я снова добавлю тот, который уже был в списке, он переместился в начало. Если я закрыл приложение и запустил его снова, список сохранился.