Элемент управления .NET TreeView с флажками - PullRequest
3 голосов
/ 08 августа 2009

Элемент управления TreeView имеет свойство checkboxes, но он ставит флажок на каждом узле. Как поставить флажок только на нужные мне узлы?

Ответы [ 2 ]

3 голосов
/ 08 августа 2009

Используйте StateImageList и TreeNode.StateImageIndex для таких целей. Вам также необходимо подписаться на событие MouseDown и изменить состояние проверки (изображение состояния), когда пользователь нажимает на изображение состояния. Используя этот подход, вы также можете эмулировать флажки с тремя состояниями, например.

На самом деле внутренняя реализация TreeView использует ту же методику, но она скрыта от вас.

Метод создания изображения для ImageList на основе CheckBoxState:

private Image CreateCheckBoxGlyph(CheckBoxState state)
{
    Bitmap Result = new Bitmap(imlCheck.ImageSize.Width, imlCheck.ImageSize.Height);
    using (Graphics g = Graphics.FromImage(Result))
    {
        Size GlyphSize = CheckBoxRenderer.GetGlyphSize(g, state);
        CheckBoxRenderer.DrawCheckBox(g,
          new Point((Result.Width - GlyphSize.Width) / 2, (Result.Height - GlyphSize.Height) / 2), state);
    }
    return Result;
}
0 голосов
/ 08 августа 2009

Я отказался от TreeView, потому что он ограничен и глючит.

Вы должны быть в состоянии вывести это поведение из коробки, используя открытый исходный код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...