【发布时间】:2009-08-07 20:52:48
【问题描述】:
TreeView 控件具有 checkboxes 属性,但它会在每个节点上放置一个复选框。 如何在我想要的节点上放置一个复选框?
【问题讨论】:
TreeView 控件具有 checkboxes 属性,但它会在每个节点上放置一个复选框。 如何在我想要的节点上放置一个复选框?
【问题讨论】:
将StateImageList 和TreeNode.StateImageIndex 用于此类目的。您还需要订阅 MouseDown 事件并在用户单击状态图像时更改检查状态(状态图像)。例如,通过使用这种方法,您还可以模拟三态复选框。
实际上内部的 TreeView 实现实际上使用了相同的方法,但这对你隐藏。
基于CheckBoxState为ImageList创建图片的方法:
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;
}
【讨论】:
我放弃了 TreeView,因为它有限且有缺陷。
您应该能够使用开源 TreeViewAdv 开箱即用地获得此行为
【讨论】: