如图,原来的Treeview控件的节点只显示文件夹名称,现客户要求在后面加上当前文件夹的文件数量!
因为原来系统有很多地方都取了Node的Text值,所以直接在Node的Text值加数量的话就会导致后面修改的工作量非常大,有什么办法可以在不改变Text值的情况下在后面加上一串显示字符?
谢谢大家先!
因为原来系统有很多地方都取了Node的Text值,所以直接在Node的Text值加数量的话就会导致后面修改的工作量非常大,有什么办法可以在不改变Text值的情况下在后面加上一串显示字符?
谢谢大家先!
实现步骤为:
1.设置TreeView绘制模式DrawMode = TreeViewDrawMode.OwnerDrawText,这样设定后文字部分用户自己实现;
2.你需求中当前文件夹数量这些数据可以存储在TreeNode节点中的Tag属性中,或者你用其他方式实现也可以,主要是为了得到该节点对应的文件夹数量数据;
3.实现TreeView的DrawNode事件,该事件实现绘制节点,具体代码如下:private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
//设置为真由系统绘制,所以文字部分系统帮你绘制回来了
e.DrawDefault = true;
//假设你定义的数据存储在节点Tag属性中
object counter = e.Node.Tag;
//数据不为空就在文字后面绘制该数据的字符串表示(e.Bounds.Right, e.Bounds.Top)
//e.Bounds.Right该节点宽度
if (counter != null)
{
e.Graphics.DrawString(counter.ToString(), Font, Brushes.Red, new PointF(e.Bounds.Right, e.Bounds.Top));
}
}效果: