Сохранить изменения MenuStrip

Есть меню. Например,там названия групп, ниже два элемента добавить группу и удалить группу. Это работает, но после перезапуска приложения, все опять на своих местах. Как можно сохранить эти изменения ? Как сделать, чтобы элементы "добавить группу" и "удалить группу" всегда находились внизу?
Public Class Form1
 
    Private Sub ДобавитьГруппуToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ДобавитьГруппуToolStripMenuItem.Click
        ГруппыToolStripMenuItem.DropDownItems.Add(InputBox("Введите название группы:"))
 
    End Sub
 
    Private Sub УдалитьГруппуToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles УдалитьГруппуToolStripMenuItem.Click
        Dim a As Integer
        a = Val(InputBox("Выберете номер группы, которую хотите удалить:"))
        ГруппыToolStripMenuItem.DropDownItems.Remove(ГруппыToolStripMenuItem.DropDownItems(a - 1))
    End Sub
End Class
4 ответа

Как вариант, скидывать содержимое меню в файл при закрытии приложения и загружать при открытии.


Alex_244, в смысле группы не сохраняются или добавить/удалить не внизу?


Ну вот у меня есть менюшка, там названия групп(ну не суть), и там есть "добавить группу" и "удалить группу". Ну в меню просто как текст содержится, просто названия групп. Ну вот если я нажму на "добавить группу" предлагается ввести ее название, она заносится в меню. Тоже самое с удалением. Выхожу из приложения. Захожу заново, но изменения не сохранились. А надо, чтобы сохранялись, ну и еще хотелось бы, чтобы эти "добавить группу" и "удалить группу" всегда находились внизу этого меню, ну то есть последними элементами


Alex_244, тогда сохранение в файл этих групп по выходу из программы. Чтение из файла при загрузке программы.Вот вам заготовка. Что непонятно - спрашивайте
Imports System.Collections.Generic
Imports System.IO
 
Public Class MainForm
    Private ReadOnly MenuFile = "menu.txt"
    Private InsertionIndex = 0
    Private Groups As List(Of String) = New List(Of String)()
 
    Private Sub InsertMenuItem(name As String)
        Dim newItem = New ToolStripMenuItem With {
            .Text = name,
            .Name = name
        }
        FileToolStripMenuItem.DropDownItems.Insert( _
            InsertionIndex, newItem)
        InsertionIndex += 1
    End Sub
 
    Protected Overrides Sub OnLoad(e As EventArgs)
        MyBase.OnLoad(e)
        If File.Exists(MenuFile) Then
            Dim lines = File.ReadAllLines(MenuFile)
            For Each line In lines
                InsertMenuItem(line)
                Groups.Add(line)
            Next
        End If
    End Sub
 
    Protected Overrides Sub OnClosing(e As System.ComponentModel.CancelEventArgs)
        File.WriteAllLines(MenuFile, Groups)
        MyBase.OnClosing(e)
    End Sub
 
    Private Sub AddGroupToolStripMenuItem_Click(sender As Object, e As EventArgs) _
        Handles AddGroupToolStripMenuItem.Click
        ' здесь будет вызываться ваш диалог с добавлением группы
        ' или другая логика, по которой определяется имя группы
 
        ' Эта строка - тестовая.
        Dim name = "hello " & InsertionIndex
        InsertMenuItem(name)
        ' А эта - нет, она нужна и вашем коде
        Groups.Add(name)
    End Sub
 
    Private Sub RemoveGroupToolStripMenuItem_Click(sender As Object, e As EventArgs) _
        Handles RemoveGroupToolStripMenuItem.Click
        ' опять же - имя должен определять ваш код
        Dim name = "hello 2"
 
        FileToolStripMenuItem.DropDownItems.RemoveByKey(name)
        Groups.Remove(name)
        InsertionIndex -= 1
    End Sub
End Class