首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么删除控件

2012-04-25 
如何删除控件C# visual studio 2010 程序为监控电池电压,在tabpage 里 采用 chart 方式 显示每个电芯电压,

如何删除控件
C# visual studio 2010 程序为监控电池电压,在tabpage 里 采用 chart 方式 显示每个电芯电压,当一tabpage显示不了所有电池信息时,会自动添加tabpage以便显示所有电池信息。
要求是当外接信号源断开时,删除所有的chart,以及添加的tabpage。因为再次接上的电池可能第一个tabpage就能全部显示。
注:第一页(页名:tabPageCellDetail1)总是保留,只删除添加的页面。
删除部分的代码如下:

C# code
private void clearChart(int batNum, byte batCell)        {            if (batCell> 5)            {                pageNo = (byte)(batNum / 10 + 1);            }            else            {                pageNo = (byte)(batNum / 19 + 1);            }            if (pageNo > 2)            {                for (int ii = 2; ii <= pageNo; ii++)                {                    string name = "tabPageCellDetail" + ii.ToString();                    tabPageCellDetail1.Controls.RemoveByKey(name);                }            }            else            {                foreach (Control charts in tabPageCellDetail1.Controls)                {                    tabPageCellDetail1.Controls.Remove(charts);                }            }        }

上述程序运行后只删除tabPageCellDetail1里面的chart 控件,程序添加的tabPageCellDetail2却没有被删除。
我还试过以下方法:
C# code
private void clearChart(int batNum, byte batCell)        {            if (batCell> 5)            {                pageNo = (byte)(batNum / 10 + 1);            }            else            {                pageNo = (byte)(batNum / 19 + 1);            }            if (pageNo > 2)            {                foreach (Control findControl in this.Controls)                {                    TabPage findTabPage = (findControl as TabPage);                    if (findControl.Name.Length > 17)                    {                        //first page, remain page, remove control                        if (findControl.Name == "tabPageCellDetail1")                        {                            foreach (Control charts in tabPageCellDetail1.Controls)                            {                                tabPageCellDetail1.Controls.Remove(charts);                            }                        }                        else                        {                            string tempStr = string.Empty;                            tempStr = findControl.Name.Substring(0, 17);                            if (tempStr == "tabPageCellDetail")                            {                                //not first page, remove page and control                                 foreach (Control charts in findControl.Controls)                                {                                    findControl.Controls.Remove(charts);                                }                                this.Controls.Remove(findControl);                                                           }                        }                    }                }            }            else            {                foreach (Control charts in tabPageCellDetail1.Controls)                {                    tabPageCellDetail1.Controls.Remove(charts);                }            }        }

但第二页的chart和第二页本身还是没有删除,只删除tabPageCellDetail1里面的chart 控件,这到底是为什么?搞不懂,请高手解决?

[解决办法]
个人觉得,dispose不可以,因为dispose这是起到释放资源的作用,并没有解决。。。你要删除控的问题。

热点排行