TreeView控件具有复选框属性,但它会在每个节点上放置一个复选框。 如何在我想要的节点上放置一个复选框?
答案 0 :(得分:3)
出于此目的,请使用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;
}
答案 1 :(得分:0)
我放弃了TreeView,因为它是有限的和错误的。
您应该能够使用开源TreeViewAdv
开箱即用