我有一个简单的c#winform,我试图为它添加一个字符串。 例如
checklistbox1.Items.Add("string");
问题是,在我关闭表单并再次运行程序后,我添加的字符串将从checklistbox中删除,我必须再次输入。
答案 0 :(得分:0)
关闭表单时,也会删除与其关联的成员。如果您希望保存它,您需要使用一种为您保存数据的方法,例如XML,txt doc,甚至数据库,具体取决于您要保留的信息的生命周期。
如果仅在程序运行时需要它,您可能会考虑将信息存储在主窗体中的成员中,而不仅仅是具有清单框的表单。
答案 1 :(得分:0)
向表单添加公共List属性。 为您的表单和第二个ctor代码创建第二个ctor 写:
public YourForm(List<string>() strings)
{
foreach(var item in strings)
{
checklistbox1.Items.Add(item);
}
}
答案 2 :(得分:0)
关闭时无需卸载表单。让父表单 - 我假设这是从另一个表单启动 - 改为卸载/处理所有子表单。诀窍是让用户看到你正在关闭表单。假设包含清单的表单是Form2,从父表单加载Form2的函数将如下所示:
Form2 _form2 = null;
private void button1_Click(object sender, EventArgs e)
{
if (_form2 == null)
{
_form2 = new Form2();
}
_form2.Show();
}
在Form2中,像这样处理Closing事件: private void Form2_FormClosing(object sender,FormClosingEventArgs e) { e.Cancel = true; 隐藏(); }
最后,在父窗体Closing事件中,您可以处置Form2
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (_form2 != null)
{
_form2.Dispose();
_form2 = null;
}
}
如果需要为Form2的所有实例使用相同的值集,则可以使用Singleton模式。那是另一个讨论:)