Задача
В лоб
Ну, логічно, що для приховання знадобиться метод Hide(), але тут-то і виявились граблі. Hide() дійсно ховає контрол, для чого він і призначений, але, з іншого боку, ламає позиціювання у всіх сайзерах, через що в мене всі інші контроли попливли. Звісно, якщо сайзери відсутні, і все позиціювання виконується в абсолютних координатах - ніяких проблем, Hide() підійде, але в моєму випадку - ні.
Неочікуване рішення
Переробляти все не хотілось, хоча і форма в мене, в принципі не ресайзиться, тому методом научного тика виявив, що проблему можна вирішити використанням методу Freeze(). Відповідно, обернений результат досягається методом Thaw().
Чому рішення неочікуване? Тому що я ніяк не очікував, що після виклику Freeze() контрол стане невидимим, власне, якщо звернутись до реалізації Freeze(), то можна виявити, що він попереджує будь-яку візуальні зміни об'єкта, незважаючи на роботу, яка над ним виконується.
Freeze
Сам по собі метод Freeze() цікавий тим, що дозволяє оптимізувати роботу вікон на етапі візуалізації. Наприклад, перед вставкою великої кількості елементів в комбо-бокс, варто йому зробити Freeze(), а після, - Thaw(). Таким чином, поки елементи вставляються, виклики перемалювання виконуватись не будуть.
Коментарі
Дописати коментар