Отображение и скрытие частей winforms (расширение?) C # .NET - PullRequest
2 голосов
/ 22 февраля 2011

У меня есть вопрос о формах и элементах управления.Я хочу добавить возможность сортировки, чтобы часть моей формы отображалась только тогда, когда что-то щелкнуло.Например, у меня есть form1, и на форме у меня есть кнопка, и когда эта кнопка нажата, форма увеличивается или расширяется (выдвигается?), Чтобы показать другие элементы управления, которые не были там до нажатия кнопки.Я понятия не имею, как это называется, поэтому я не знаю, что искать, но я видел, что это используется во многих других приложениях.Любая информация по этому вопросу будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 22 февраля 2011

Я делал это раньше. Начните с организации вашей формы в логических разделах. Не оставляйте все свои элементы управления в форме, разместите их внутри панелей. Во время разработки вам нужно, чтобы панели были «полностью развернуты», но затем во время выполнения вы манипулируете панелями left, top, width, height и, возможно, даже свойствами выравнивания и привязки через код. Вы можете использовать таймер в соответствии с предложением @Adam Rackis .. или изменить значение приращения, чтобы изменить скорость анимации. Сама анимация - это просто цикл, который начинается с x = x1 и заканчивается x = x2, где x = x + increment_value внутри цикла. При изменении значения «x» компонент будет автоматически перерисован. Чтобы получить более плавный эффект, вам может понадобиться перекрашивать элемент управления (или всю панель) на каждой итерации. Если он работает слишком быстро, вы можете либо вставить задержку, либо попытаться заставить цикл полагаться на таймер. У меня были проблемы с таймерами для такого рода вещей, но по общему признанию я не использовал C # .NET в то время (я сделал это в Delphi). Для того, чтобы это работало, нужно много поиграться с мелкими деталями, так что наберитесь терпения, это не Flash! Удачи.

2 голосов
/ 22 февраля 2011

Возможно, вам придется развернуть собственную анимацию, увеличив размеры размера вашей формы (или панели, или чего-либо еще) по таймеру, тем самым открывая ранее скрытые элементы управления.

        Timer T = new Timer();
        T.Interval = 10;
        T.Tick += (s, e) =>
        {
            myForm.Size = new System.Drawing.Size(myForm.Width + 10, myForm.Height);
            if (myForm.Size.Width >= FormWidthThreashold)
                T.Stop();
        };
        T.Start();

Нариск констатировать очевидное, я не думаю, что есть какой-либо способ переключить WPF?Этот материал встроен и довольно прост для WPF.Если нет, то как-то так должно начаться.

...