我想创建一个只能打开一次内容的Tab Control。打开的每个项目都需要检查容器以确保它尚未显示。我相信我想要使用的方法是bool TabControl.TabPages.ContainsKey(string key)方法,但它总是返回值 false 。
我已经创建了一个解决方法,我将对象存储在一个单独的列表中,我与tab控件保持同步,但感觉非常错误。我在控件的TabPages属性中有一个列表,所以我应该可以查询它。
我错过了一处房产吗?我对这种方法的期望是什么以及它的表现是否正确?如何让它正确识别我打开的标签?
以下是一些与我正在做的类似的示例代码:
private void _fillTabControl()
{
List<string> keys = new List<string>() { "one", "two" };
foreach (string key in keys)
_addTab(key);
bool alreadyOpened = tabControl.TabPages.ContainsKey(keys[0]);
}
private void _addTab(string key)
{
TextBox textBox = new TextBox();
textBox.Text = key;
TabPage tab = new TabPage();
tab.Text = key;
tab.Controls.Add(textBox);
tabControl.TabPages.Add(tab);
}
答案 0 :(得分:1)
医生说的一切:
“名称属性对应于TabControl.TabPageCollection中TabPage的键。”
您正在使用Text属性,您应该设置
tab.Name = "MyName";
然后
tabControl.TabPages.ContainsKey("MyName");
将返回true;