【问题标题】:Panel in Windows Forms Application not clearingWindows 窗体应用程序中的面板未清除
【发布时间】:2011-02-18 08:20:10
【问题描述】:

我正在开发我的项目:[Beer Pong Management System][1],一个 Windows 窗体应用程序。我目前正在尝试为其添加整个锦标赛模式。简而言之,我创建了一个 TabControl,第一个标签页包含设置和设置,第二页包含括号。

每场比赛都有一个功能,一旦确定了获胜者,就会出现一个黄色的取消按钮,以便恢复比赛。但是我的问题是,当我单击按钮时,系列赛中的下一场比赛不会被删除。见下文:

Image Here(not high enough rep to insert image)

我尝试将 MatchUp 设置为 null,我尝试过 dispose()、close()。甚至 Parent.Controls.Remove()。 即使我切换了应该清除所有的标签,当我回来时它们仍然坐在那里。

我有一种感觉,我可能会失去参考或其他什么,因为我什至无法将新团队推入他们,他们只是坐在那里按自己的按钮。

有没有人有任何提示或知道可能导致此问题的任何已知问题?谢谢。

[1] _http://www.cs.rit.edu/~rmb1201/pages/code.shtml

【问题讨论】:

  • 非常不清楚。我什至无法判断屏幕截图是一个控件还是多个控件。看不到面板,看不到选项卡控件。没有看到任何代码。
  • 对不起,让我重申一下。当我创建锦标赛时。我为每个括号深度(开始、四分之一、半决赛、决赛)创建了一组 MatchUps。这些比赛中的每一个都有一个按钮来选择哪支球队获胜。选择后,其他团队将被禁用,您单击的按钮将变为黄色后退按钮。一旦连续两支球队都这样做了,我就会根据前两支球队的获胜者设置下一个支架深度的对决。应该发生的事情是,如果我点击后退按钮,下一个括号深度应该处理匹配并将前 2 个恢复到开始状态。
  • 我认为对于您的要求,您将不得不发布一些代码。

标签: c# winforms controls custom-controls


【解决方案1】:

也许这个 sn-p 可以帮助您识别问题:

    public string GetControlSummary(Control rootControl, int level)
    {
        string result = "";
        foreach (Control childControl in rootControl.Controls)
        {
            result += new string(' ', level * 4) + childControl.Name + " (" + childControl.GetType().Name + ")\r\n";
            result += GetControlSummary(childControl, level + 1);
        }
        return result;
    }

只需传递您添加控件的 tabPage 或 Panel;它将为您提供已添加的所有控件和子控件的列表。如果控件不在列表中,它们也不应该被绘制。

【讨论】:

  • 多么棒的工具(通常也是如此)。谢谢你。从它发送的报告看起来,我正在创建重复的控件,这意味着我的代码中某处有一个流氓“新”。谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-06-05
  • 2016-10-07
  • 2011-01-04
  • 2010-11-02
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 2011-05-29
相关资源
最近更新 更多