如图,原来的Treeview控件的节点只显示文件夹名称,现客户要求在后面加上当前文件夹的文件数量!
因为原来系统有很多地方都取了Node的Text值,所以直接在Node的Text值加数量的话就会导致后面修改的工作量非常大,有什么办法可以在不改变Text值的情况下在后面加上一串显示字符?
谢谢大家先!

解决方案 »

  1.   

    不改变TEXT。还要后面加字。这个。。
      

  2.   

    原来系统有很多地方都取了Node的Text值,的确是个问题,感觉可以在点击的时候,把Text值中的文件数量部分去掉。
      

  3.   

    不更改原来数据只能采取绘图方式实现,只需要绘制文字部分即可:
    实现步骤为:
    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));
         }
    }效果: