我在visual studio C#中创建了一个带有文本框和保存按钮的表单,在文本框中输入文本并单击“保存”在垂直flowlayout面板中的另一个表单上创建一个动态按钮,但是当我重新运行我的应用程序时文本框中的新文本,或重新启动我的应用程序,然后上一个按钮丢失,所以告诉我一些逻辑或代码,如何在flowlayout面板中永久保存该动态按钮,并在保存新文本时创建另一个按钮以下的按钮创建了一个等等。
答案 0 :(得分:1)
您可能希望将重新创建按钮(可能是标签,位置或顺序)所需的信息保存到某种形式的配置文件中。启动应用程序时,请检查该文件是否存在。如果是,请重新阅读,然后重新创建按钮。
答案 1 :(得分:1)
要保存在运行时完成的操作,您必须使用文件,或使用Application Settings
。有关应用程序设置的详细参考,请参见MSDN。
您可以创建类似ButtonsList
的类型设置(您必须为其编写类)以存储创建的按钮。我说ButtonsList
考虑到你想要保存每个按钮的更多属性。如果除了标题之外不需要保存任何其他内容,则可以将该属性设置为字符串数组。
另外,非常重要的一点是,点击Save
按钮后,您必须致电
Properties.Settings.Default.Save();
在应用程序未开启时保存已保存的数据。
步骤:
PROJECT
菜单项。<project-name> Properties
项目。Settings
。Setting
,然后输入您要创建的设置的名称(例如dynamicButtons
)。string
下拉列表,然后选择System.Colletions.Specialized.StringCollection
。转到您的计划并点击Save
点击事件类型:
Properties.Settings.Default.dynamicButtons.Add("button1_caption");
Properties.Settings.Default.Save();
以下是名为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.
希望我的努力没有用处:)