CA2000 неприятен, слишком много ложных предупреждений.FxCop недостаточно умен, чтобы знать, как работает класс Control.Его метод Dispose () только делает что-то полезное после , когда создается собственное окно управления.Только тогда будут неуправляемые ресурсы, которые можно было бы утилизировать.Но этого не произойдет до тех пор, пока возвращаемая вами TabPage не будет добавлена в TabControl, а этот элемент управления в свою очередь добавляется в форму и вызывается метод Show () этой формы.Код, который мы не можем видеть (ни FxCop в этом отношении).Более того, они на самом деле do удаляются, даже когда есть исключение, когда собственное окно разрушается.
Вы можете подавить предупреждение, добавив try / catch в методы, чтобы вы могли вызыватьDispose () в блоке catch.Но это было бы ошибкой, оно просто добавляет ненужный код, который не делает ничего полезного во время выполнения.Используйте атрибут [SuppressMessage], чтобы избавиться от предупреждения.