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

时间:2014-02-07 11:55:03

标签: c#

我在visual studio C#中创建了一个带有文本框和保存按钮的表单,在文本框中输入文本并单击“保存”在垂直flowlayout面板中的另一个表单上创建一个动态按钮,但是当我重新运行我的应用程序时文本框中的新文本,或重新启动我的应用程序,然后上一个按钮丢失,所以告诉我一些逻辑或代码,如何在flowlayout面板中永久保存该动态按钮,并在保存新文本时创建另一个按钮以下的按钮创建了一个等等。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

另外,非常重要的一点是,点击Save按钮后,您必须致电

Properties.Settings.Default.Save();

在应用程序未开启时保存已保存的数据。

步骤:

  1. 在Visual Studio中,单击PROJECT菜单项。
  2. 点击<project-name> Properties项目。
  3. 在打开的窗口中,转到左侧窗格中的Settings
  4. 点击窗口中间的表格中的Setting,然后输入您要创建的设置的名称(例如dynamicButtons)。
  5. 点击string下拉列表,然后选择System.Colletions.Specialized.StringCollection
  6. 转到您的计划并点击Save点击事件类型:

    Properties.Settings.Default.dynamicButtons.Add("button1_caption"); Properties.Settings.Default.Save();

  7. 以下是名为ButtonInfo的简单ButtonsCollection集合的代码:

    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];
        }
    }
    

    由于Visual Studio中“设置”的可视化设计器不允许您使用自定义类型设置,因此您必须执行一些手动操作。您可以找到有关创建这些自定义设置的更多信息here, on MSDN.

    希望我的努力没有用处:)