Отображение подсказок для узлов TreeView в C#

Во время разработки я добавил элемент формы TreeView в форму. Я также добавил связанный элемент управления ImageList для хранения изображений для узлов управления TreeView, и я установил элемент управления TreeView ImageList в элемент управления ImageList. Наконец, я добавил компонент ToolTip в форму и назвал его ttOrg.

При запуске программы он создает три типа узлов TreeView, представляющих фабрики, группы и лица. Он создает связанный объект для каждого узла и присваивает его свойству Tag узла, чтобы предоставить дополнительную информацию об объектах, которые они представляют.

В этом примере классы объектов FactoryData, GroupData и PersonData действительно просто содержат имена, отображаемые во всплывающих подсказках, но в реальном вы могли бы дать им более интересную информацию и методы.

Следующий код показывает, как программа создает новый заводский узел.

factory = AddTreeViewNode(trvOrg.Nodes,
     "R & D", imFactory,
    new FactoryData("Factory: R & D"));

Здесь параметры метода AddTreeViewNode представляют собой:

Следующий код показывает метод AddTreeViewNode, который вызывает предыдущий код.

// Добавить новый узел в коллекцию.
private TreeNode AddTreeViewNode(TreeNodeCollection parent_nodes,
    string text, int image_index, object tag_object)
{
    TreeNode new_node = parent_nodes.Add(text);
    new_node.ImageIndex = image_index;
    new_node.SelectedImageIndex = image_index;
    new_node.Tag = tag_object;
    return new_node;
}

Метод добавляет новый TreeNode в TreeNodeCollection, переданный в качестве первого параметра. Он устанавливает ImageIndex узла, чтобы указать, какое изображение ImageList должно отображаться для этого узла. Наконец, он устанавливает свойство узла Tag для связанного объекта.

В следующем коде показан простой класс FactoryData, используемый в этом примере.

public class FactoryData
{
    public string Name = "";

    // Инициализация конструктора.
    public FactoryData(string new_name)
    {
        Name = new_name;
    }
}

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

// Отобразите соответствующую подсказку.
private TreeNode old_node = null;
private void trvOrg_MouseMove(object sender, MouseEventArgs e)
{
    // Найти узел под мышкой.
    TreeNode node_here = trvOrg.GetNodeAt(e.X, e.Y);
    if (node_here == old_node) return;
    old_node = node_here;

    // Посмотрим, есть ли у нас узел.
    if (old_node == null)
    {
        ttOrg.SetToolTip(trvOrg, "");
    }
    else
    {
        // Получить данные объекта этого узла.
        if (node_here.Tag is FactoryData)
        {
            FactoryData factory_data = node_here.Tag as FactoryData;
            ttOrg.SetToolTip(trvOrg, factory_data.Name);
        }
        else if (node_here.Tag is GroupData)
        {
            GroupData group_data = node_here.Tag as GroupData;
            ttOrg.SetToolTip(trvOrg, group_data.Name);
        }
        else if (node_here.Tag is PersonData)
        {
            PersonData person_data = node_here.Tag as PersonData;
            ttOrg.SetToolTip(trvOrg, person_data.Name);
        }
    }
}

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

Если новый узел null, код устанавливает TreeView элемент управления ToolTip в пустую строку, чтобы удалить предыдущую всплывающую подсказку. р>

Если новый узел не является null, код проверяет тип узла и соответствующим образом устанавливает ToolTip.

Источник: http://csharphelper.com/blog/2017/04/display-tooltips-for-treeview-nodes-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector