Вызов определенного UserControl на основе того, какой узел проверен в структуре TreeView - PullRequest
0 голосов
/ 04 марта 2019

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

У меня также есть структура TreeView (TreeView1), которая имеет корневой узел (с двумя дочерними узлами,флажки).

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

Это код, который я написал для ответа на проверку.событие:

private void TreeView1_AfterCheck(object sender, TreeViewEventArgs e)
    {
      string Case;

      Case = e.Node.Name;

      switch (Case)
      {
        case "Call_UC1": //Name of the first node of TreeView Structure
             UC1.BringToFront(); //UC1 - object of the User Control 1
             UC1.Visible = true;
             break;

         case "Call_UC2": //Name of the second node TreeView Structure
             UC2.BringToFront(); //UC2 - object of the User Control 2
             UC2.Visible = true;
             break;

         default:
             break;
       }
    }

Проблема в том, что пользовательские элементы управления не отвечают, когда я проверяю любой из флажков любого узла.Ничего не происходит.Я предполагаю, что моя реализация обработчика событий TreeView была неправильной.Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 04 марта 2019

AfterCheck () также срабатывает, когда узел имеет значение UNCHECKED ... вам необходимо проверить это.Кроме того, у вас есть код, который предотвращает одновременную проверку обоих полей?Иначе, какой должен быть впереди?Какой из них был последний раз проверен?

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

Так много вопросов ...

Это может ~ быть тем, что вы ищете:

    private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
    {
        if (e.Node.Checked)
        {
            if(e.Node.Name == "Call_UC1")
            {
                UC1.Visible = true;
                UC1.BringToFront();
            }
            else if (e.Node.Name == "Call_UC2")
            {
                UC2.Visible = true;
                UC2.BringToFront();
            }
        }
    }
...