Есть ли в C # winforms элемент управления наподобие ViewStack во Flex? - PullRequest
2 голосов
/ 05 февраля 2010

В Flex есть компонент ViewStack . Имеет ли C # аналогичный элемент управления?
Если так, то какой? Если нет, то как вы создаете подобное поведение?

Ответы [ 3 ]

4 голосов
/ 05 февраля 2010

Да, компонент TabControl работает таким образом. Все, что вам нужно сделать, это скрыть вкладки. Добавьте новый класс в ваш проект и вставьте код, показанный ниже. Компиляция. Перетащите новый элемент управления из верхней части панели инструментов на форму. Вкладки все еще видны во время разработки, что позволяет легко редактировать страницы. Но скрыто во время выполнения. Используйте свойство SelectedTab или SelectedIndex, чтобы выбрать представление.

using System;
using System.Windows.Forms;

class ViewStack : TabControl {
  protected override void WndProc(ref Message m) {
    // Hide tabs by trapping the TCM_ADJUSTRECT message
    if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
    else base.WndProc(ref m);
  }
}
1 голос
/ 05 февраля 2010

Нет, стандартного элемента управления, обеспечивающего такое же поведение, нет.

Однако, чтобы получить похожее поведение, я просто создал бы новый UserControl для каждого элемента в стеке представления и добавил их в родительскую форму в том же месте и с той же шириной / высотой.

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

Основным преимуществом UserControls является то, что вы можете использовать конструктор для визуального создания каждого из отдельных элементов стека. Возможным недостатком является то, что если у вас много элементов в стеке или каждый элемент стека сложен, использование памяти может стать довольно большим.

0 голосов
/ 05 февраля 2010

Я не думаю, что он существует изначально. Вам, вероятно, придется поиграть со свойством Visible.

...