C# TabControl.TabPages.Clear()突然停止工作

C# TabControl.TabPages.Clear()突然停止工作,c#,.net,winforms,C#,.net,Winforms,TabControl.TabPages.Clear()刚刚停止工作。现在什么都不清楚 代码: 为什么会这样 下面是我用来向TabControl动态添加TabPages的代码: public void menuItem7_Click(object sender, EventArgs e) { tabControl.TabPages.Add(new TabPage() { Text = "Untitled" }); } 您正在编写非常危险的代码,Clear()方法没有达到您希望的效果。启动

TabControl.TabPages.Clear()刚刚停止工作。现在什么都不清楚

代码:

为什么会这样

下面是我用来向TabControl动态添加TabPages的代码:

public void menuItem7_Click(object sender, EventArgs e)
{
    tabControl.TabPages.Add(new TabPage() { Text = "Untitled" });
}

您正在编写非常危险的代码,Clear()方法没有达到您希望的效果。启动TaskMgr.exe,单击“进程”选项卡。使用“查看+选择列”并勾选“用户对象”选项。在列表中找到您的程序,并注意显示的值。请注意,调用Clear()不会降低用户对象值。很有可能,当你使用你的程序时,你会看到它稳步上升。当显示值达到10000时,会发生非常糟糕的事情

删除选项卡页的正确方法是处置它们。像这样:

   while (tabControl1.TabCount > 0) tabControl1.TabPages[0].Dispose();

您正在编写非常危险的代码,Clear()方法没有达到您希望的效果。启动TaskMgr.exe,单击“进程”选项卡。使用“查看+选择列”并勾选“用户对象”选项。在列表中找到您的程序,并注意显示的值。请注意,调用Clear()不会降低用户对象值。很有可能,当你使用你的程序时,你会看到它稳步上升。当显示值达到10000时,会发生非常糟糕的事情

删除选项卡页的正确方法是处置它们。像这样:

   while (tabControl1.TabCount > 0) tabControl1.TabPages[0].Dispose();

您确定已注册
菜单项39\u单击
是否正常?尝试在
.Clear()
行设置一些断点,看看它是否在那里跳转。您好@KingKing,我设置了一个断点,并且正在注册Click事件,它经历了删除过程-但只是没有删除任何内容。我在整个过程中检查了所有的值,但没有任何异常(对我来说),除了当我在代码中的TabPages上悬停时,弹出的内容是“Tab Count:0”(当仍有7个选项卡打开时)。从声音上看,你是在动态创建选项卡页面并将它们分配给你的选项卡控件?你能把你的问题也编辑成代码吗?当然可以,@Adrian;已添加。在清除选项卡控件的项目后,您是否忘记刷新它?您确定已注册
菜单项39\u Click
?尝试在
.Clear()
行设置一些断点,看看它是否在那里跳转。您好@KingKing,我设置了一个断点,并且正在注册Click事件,它经历了删除过程-但只是没有删除任何内容。我在整个过程中检查了所有的值,但没有任何异常(对我来说),除了当我在代码中的TabPages上悬停时,弹出的内容是“Tab Count:0”(当仍有7个选项卡打开时)。从声音上看,你是在动态创建选项卡页面并将它们分配给你的选项卡控件?你能把你的问题也编辑成代码吗?当然可以,@Adrian;已添加。在清除选项卡控件的项目后,您是否忘记刷新它?再次感谢@Hans。我的印象是,调用Dispose()并不意味着对象将立即从集合中移除(这是我读到的)。但现在我知道了,谢谢你。再次谢谢你@Hans。我的印象是,调用Dispose()并不意味着对象将立即从集合中移除(这是我读到的)。但现在我知道了,谢谢你。