2010-08-09 2 views
2

Я пытаюсь изменить панель на конкретную форму (так как это единственный способ понять ее) на основе выбранного узла TreeView. Например, в Visual Studio, если вы щелкнете правой кнопкой мыши на «Solution» solutionname '(1 Project) », нажмите« Свойства », на нем появится список деревьев с левой стороны. Когда вы нажимаете на выделение, правая панель изменяется.Как изменить отображение с помощью TreeView?

Я искал непрерывно несколько часов в предыдущие несколько дней и нашел только учебное пособие, показывающее, как это может повлиять на элемент управления webBrowser.

Это надуманный пример, который я могу понять:

private void tree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
treeNode nName = e.Node;
//For testing:
string pg = "";
pg = nName.Tag;
if (pg == "Form2") display = Form2;
}

Дисплей представляет собой панель. Я знаю, что это абсолютно неправильно, но я не смог найти подходящий метод, используя мои условия поиска.

ответ

1

Вам необходимо будет установить Visible на всех ваших панелях на false, за исключением того, который вы хотите отобразить, который будет установлен на true.

WinForms не имеет особого способа настроить это. Вы можете установить свойство Tag каждого узла в качестве ссылки на панель (это должно быть сделано программно - разработчик не позволит вам это сделать), а затем перебирает все дерево, чтобы установить ((Panel)node.Tag).Visible = false, а затем ((Panel)e.Node.Tag).Visible = true или вы может поддерживать список отдельно. Если у вас нет большого количества панелей, блок switch/if-else тоже может быть в порядке.

+0

Так что в дизайнере мне нужно было бы создавать панели на панелях? Это кажется довольно беспокойным, но это, кажется, общий и обычно используемый метод создания меню. Я бы хотел подумать, что есть более эффективный, более чистый способ сделать это. Возьмите uTorrent, например; нажав «Параметры» -> «Настройки» (или CTRL + P), вы увидите список; при выборе узла правая панель изменяется безупречно. Были ли эти панели на панелях? – Salt

+0

Я бы так предположил. Изменение видимости всей панели гораздо предпочтительнее для динамического создания/уничтожения элементов пользовательского интерфейса. Использование панели группирует окна (дочерние окна = элементы управления) в другое окно и делает их наследуемыми видимостью (и другими свойствами). – Zooba

Смежные вопросы