我试图想出一种非常简单的方法来为标签控件中的每个标签页存储一个布尔值。每个页面都有一个文本框,我想存储一个 bool foreach 页面,所以如果标签页 1 已保存,则 bool1 设置为 true,否则设置为 false,依此类推。
然后当他们关闭程序时,它会检查所有标签页并查看每个标签页是否已保存。我需要能够创建某种我可以搜索和操作的列表。
我以前为此使用过标签属性,但由于某种原因,它不再正常工作了。
任何帮助建议都会非常好;您将不胜感激:)
谢谢你,
贝尔。
我试图想出一种非常简单的方法来为标签控件中的每个标签页存储一个布尔值。每个页面都有一个文本框,我想存储一个 bool foreach 页面,所以如果标签页 1 已保存,则 bool1 设置为 true,否则设置为 false,依此类推。
然后当他们关闭程序时,它会检查所有标签页并查看每个标签页是否已保存。我需要能够创建某种我可以搜索和操作的列表。
我以前为此使用过标签属性,但由于某种原因,它不再正常工作了。
任何帮助建议都会非常好;您将不胜感激:)
谢谢你,
贝尔。
例如,您可以使用Dictionary<TabPage,bool>
. 在您的应用程序开始时:
var pageStates=new Dictionary<TabPage,bool>();
foreach(var page in tabControl.TabPages) {
pageStates.Add(page, false);
}
要更改 TabPage 的状态:
pageStates[page]=true;
当您的应用程序完成时:
foreach(var page in TabControl.TabPages) {
if(pageStates[page]) {
//The page is saved
}
}
List<TabPage>
仅存储那些需要保存的标签页。如果为空,则无需保存任何内容。
数组、列表和字典都不是用于跟踪一组对象的布尔状态的正确数据结构。这样做的结构仅此而已HashSet<T>
。a 要么T
在集合中,要么不在集合中。
它优于 aDictionary<T, bool>
因为它实际上维护了两种状态:对象是否在字典中,如果是,它的值是真还是假。
它优于 aList<T>
有两个原因:它更快(尽管在您的情况下,这几乎可以忽略不计),并且它并不意味着它包含的对象的顺序有一定的意义,因为 a 中的对象顺序HashSet<T>
是任意的。
如果您在不删除或添加元素的情况下进行迭代,请使用数组。
如果您正在迭代但添加和删除元素,请使用 List。
如果您使用字符串作为键,则使用字典。
与列表相比,字典具有非常快的查找性能,具有大量元素。