【问题标题】:How to save a dynamic button permanently even when the machine is restarted即使机器重新启动,如何永久保存动态按钮
【发布时间】:2014-02-07 11:55:02
【问题描述】:

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

【问题讨论】:

    标签: c#


    【解决方案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();

    下面是一个简单的ButtonInfos 集合的代码,称为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.

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

    【讨论】:

    • 非常感谢,信息量很大,但除了按钮的文本,我还想将其位置保存在 flowlayout 面板中,以便下次生成按钮时,应该在按钮下方创建它前一个。那么该怎么做呢..?
    • 如果您考虑,请将我的回答标记为您的问题:)
    【解决方案2】:

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

    【讨论】:

    • 你能给我一些关于如何做到这一点的链接吗??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 2020-04-21
    • 2019-06-27
    • 1970-01-01
    相关资源
    最近更新 更多