【发布时间】:2013-10-09 03:41:51
【问题描述】:
我有 x 个 TabPage,每个 TabPage 上有一个 AddressBar 控件和一个 WebBrowser 控件。 WebBrowser 控件(自定义控件)有一个 int 类型的属性,称为 BrowserCount。
BrowserCount 值应与它所在的 TabPage 相同。所以 TabPage[0] 有一个 BrowserCount = 0 的浏览器;等等
但是,当我删除 TabPage 时,数字会不同步。显然,答案是简单地遍历剩余的 TabePages 并将 BrowserCount 重置为 TabPages 新索引。
我有这个代码:
private void UpdateTabs()
{
// Renumber Tabs and Browsers
int tabCount = 0;
foreach (TabPage tp in customTabControl1.TabPages)
{
tp.Tag = tabCount;
foreach (Control ctrl in tp.Controls)
{
if (ctrl.Name == "browser")
{
ctrl.BrowserCount = TabCount; // Error Unknown member BrowserCount
}
}
}
}
看来我需要在该选项卡上获取浏览器的实际实例才能访问 BrowserCount 属性(这根本不是属性,它只是一个公共(非静态)变量)。
有什么想法可以让浏览器的 BrowseCount 重新编号,以便它们与父 TabPage 的索引相同?
谢谢。
【问题讨论】:
-
您可以使用 TabControl Count 属性作为迭代器的来源。
-
如何在您的
TabPage上实现INotifyPropertyChanged并在索引更改时引发事件?您需要使用这种方法创建自己的TabPage -
您可以做的一件事是您可以引发一个由您的 customTabControl 处理的事件。这样您就不必在特定标签页上保留浏览器的实际实例。
-
我知道标签和浏览器何时关闭 - 我只需要将浏览器编号重新同步到标签索引。
标签: c# .net winforms user-controls tabs