C# 如何在机器重新启动时永久保存动态按钮

C# 如何在机器重新启动时永久保存动态按钮,c#,C#,我在visual studio C#中创建了一个带有文本框和保存按钮的表单,在文本框中输入文本,然后单击“保存”在垂直flowlayout面板中的另一个表单上创建一个动态按钮,但当我在文本框中使用新文本重新运行应用程序或重新启动应用程序时,上一个按钮将丢失,因此,请告诉我一些逻辑或代码,如何在flowlayout面板中永久保存该动态按钮,当保存新文本时,它会在先前创建的按钮下方创建另一个按钮,依此类推。您需要保存重新创建按钮所需的信息(可能是标签、位置或顺序)到某种形式的配置文件。启动应用程序时

我在visual studio C#中创建了一个带有文本框和保存按钮的表单,在文本框中输入文本,然后单击“保存”在垂直flowlayout面板中的另一个表单上创建一个动态按钮,但当我在文本框中使用新文本重新运行应用程序或重新启动应用程序时,上一个按钮将丢失,因此,请告诉我一些逻辑或代码,如何在flowlayout面板中永久保存该动态按钮,当保存新文本时,它会在先前创建的按钮下方创建另一个按钮,依此类推。

您需要保存重新创建按钮所需的信息(可能是标签、位置或顺序)到某种形式的配置文件。启动应用程序时,请检查文件是否存在。如果有,请重新阅读,然后重新创建按钮

要保存在运行时完成的操作,您必须使用文件,或使用
应用程序设置
。有关应用程序设置的详细参考信息,请参见

您可以创建一个类似
ButtonsList
(您必须为其编写一个类)的设置来存储创建的按钮。我说的
ButtonsList
是考虑到您希望保存每个按钮的更多属性。如果不需要保存标题以外的任何内容,则可以将该属性设置为字符串数组

另外,非常重要的一点是,单击
保存
按钮后,您必须调用

Properties.Settings.Default.Save();
在应用程序未打开时保留保存的数据

步骤:

  • 在Visual Studio中,单击
    PROJECT
    菜单项
  • 单击
    Properties
  • 在打开的窗口中,转到左侧窗格上的设置
  • 在窗口中间的表中单击<代码>设置<代码>,并键入要创建的设置的名称(例如,代码>动态按钮< /代码>)。
  • 单击
    string
    下拉列表,然后选择
    System.collections.Specialized.StringCollection
  • 转到您的程序,在
    保存
    中单击事件类型:

    Properties.Settings.Default.dynamicButtons.Add(“button1\u标题”)
    
    Properties.Settings.Default.Save()

  • 下面是名为
    按钮集合
    按钮信息的简单集合的代码:

    class ButtonInfo
    {
        public string Caption { get; set; }
        public Point Location { get; set; }
        public Size ButtonSize { get; set; }
        public ButtonInfo(string caption, Point location, Size size )
        {
            this.Caption = caption;
            this.Location = location;
            this.ButtonSize = size;
        }
    }
    
    class ButtonsCollection : System.Collections.CollectionBase
    {
        public void Add(ButtonInfo bi)
        {
            List.Add(bi);
        }
    
        public void Remove(int index)
        {
            if (index > Count - 1 || index < 0)
            {
                System.Windows.Forms.MessageBox.Show("Index not valid!");
            }
            else
            {
                List.RemoveAt(index);
            }
        }
    
        public ButtonInfo Item(int index)
        {
            return (ButtonInfo)List[index];
        }
    }
    
    class按钮信息
    {
    公共字符串标题{get;set;}
    公共点位置{get;set;}
    公共大小按钮化{get;set;}
    公共按钮信息(字符串标题、点位置、大小)
    {
    this.Caption=标题;
    这个位置=位置;
    this.ButtonSize=大小;
    }
    }
    类按钮集合:System.Collections.CollectionBase
    {
    公共作废添加(按钮信息bi)
    {
    列表。添加(bi);
    }
    公共无效删除(整型索引)
    {
    如果(索引>计数-1 | |索引<0)
    {
    System.Windows.Forms.MessageBox.Show(“索引无效!”);
    }
    其他的
    {
    列表。删除(索引);
    }
    }
    公共按钮信息项(整数索引)
    {
    返回(按钮信息)列表[索引];
    }
    }
    
    由于visual Studio中设置的visual designer不允许您使用自定义类型设置,因此您必须执行一些手动操作。您将了解有关创建这些自定义设置的更多信息


    希望我的努力没有白费:)

    非常感谢,非常有用,但我还希望与按钮的文本一起保存其在flowlayout面板中的位置,以便下次生成按钮时,应将其创建在上一个按钮的正下方。如果你考虑的话,请把我的答案标记为你的问题的答案:)你能给我提供一些关于如何做到这一点的链接吗?