Панель в приложении Windows Forms не очищается

Я работаю над своим проектом: [Система управления Beer Pong][1], приложение Windows Forms. В настоящее время я пытаюсь добавить в него целый турнирный режим. В двух словах, я создал TabControl с первой вкладкой с настройками и настройками, а второй страницей со скобками.

Для каждого из матчей есть функция: после определения победителя появляется желтая кнопка отмены, чтобы отменить турнир. Однако моя проблема заключается в том, что когда я нажимаю кнопку, следующий матч не удаляется из серии. Смотри ниже:

Изображение здесь (недостаточно высокой репутации для вставки изображения )

Я пытался установить для MatchUp значение null, пробовал dispose(), close(). даже Parent.Controls.Remove(). Даже после того, как я переключаю вкладки, которые должны очистить все, они все еще остаются там, когда я возвращаюсь.

У меня такое чувство, что я могу потерять ссылку или что-то в этом роде, потому что я даже не могу впихнуть в них новые команды, они просто сидят со своими кнопками.

Есть ли у кого-нибудь какие-либо советы или сведения о каких-либо известных проблемах, которые могут быть причиной этого? Спасибо.

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


person rbucinell    schedule 11.05.2010    source источник
comment
Очень непонятно. Я даже не могу сказать, является ли снимок экрана одним элементом управления или несколькими элементами управления. Не видите панель, не видите элемент управления вкладками. Не вижу никакого кода.   -  person Hans Passant    schedule 12.05.2010
comment
извините, повторюсь. Когда я создаю файл tourney. Я создаю массив MatchUps для каждой глубины сетки (Starting, Quarters, Semis, Finals). У каждого из этих матчей есть кнопка, чтобы выбрать, какая команда победит. После выбора другая команда будет отключена, а кнопка, которую вы нажали, превратится в желтую кнопку «Назад». После того, как две последовательные команды сделали это, я устанавливаю следующий матч глубины сетки от победителей двух предыдущих. Что должно произойти, так это то, что если я нажму кнопку «Назад», предполагается, что следующая глубина скобки избавится от совпадения и вернет предыдущие 2 в начальное состояние.   -  person rbucinell    schedule 12.05.2010
comment
Я думаю, что для того, о чем вы просите, вам придется опубликовать код.   -  person Matt Jordan    schedule 12.05.2010


Ответы (1)


Возможно, этот фрагмент поможет вам определить проблему:

    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, в которую вы добавили свои элементы управления; это даст вам список всех элементов управления и вспомогательных элементов управления, которые вы добавили. Если элементов управления нет в списке, их также не следует закрашивать.

person C.Evenhuis    schedule 12.05.2010
comment
Какой отличный инструмент (в целом тоже). Спасибо за это. Судя по отчету, который он отправляет, я создаю дубликаты элементов управления, что означает, что где-то в моем коде есть мошеннический «новый». Спасибо. - person rbucinell; 12.05.2010