同步tabpages及其控件

时间:2013-10-09 03:41:52

标签: c# .net winforms user-controls tabs

我有多个TabPages,每个TabPages上都有一个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的索引相同?

感谢。

1 个答案:

答案 0 :(得分:1)

  

//错误未知成员BrowserCount

正确...因为您的变量“ctrl”属于Control类型,而Control没有此类属性/字段称为“BrowserCount”。

你需要CAST“ctrl”到正确的类型。这看起来像是:

        int tabCount = 0;
        foreach (TabPage tp in customTabControl1.TabPages)
        {
            tp.Tag = tabCount;
            foreach (Control ctrl in tp.Controls)
            {
                if (ctl is YourUserControlTypeHere)
                {
                    YourUserControlTypeHere uc = (YourUserControlTypeHere)ctl;
                    uc.BrowserCount = TabCount; // Error Unknown member BrowserCount
                }
            }
        }