110,535
社区成员
发帖
与我相关
我的任务
分享
public partial class Form5 : Form
{
private TreeView _treeView = new TreeView();
public Form5()
{
InitializeComponent();
_treeView.Dock = DockStyle.Fill;
_treeView.DrawMode = TreeViewDrawMode.OwnerDrawText;
_treeView.DrawNode += new DrawTreeNodeEventHandler(_treeView_DrawNode);
this.SuspendLayout();
this.Controls.Add(_treeView);
this.ResumeLayout();
CreateNodes();
}
void _treeView_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
var treeItem = e.Node.Tag as TreeItem;
if(treeItem == null || treeItem.icons.Count == 0)
{
e.Graphics.DrawString(e.Node.Text,_treeView.Font, Brushes.Black, e.Bounds);
}
else
{
int l = e.Bounds.Left;
int t = e.Bounds.Top;
int h = e.Bounds.Height;
foreach(var img in treeItem.icons)
{
var rect = new Rectangle(l, t, h, h);
e.Graphics.DrawImage(img, rect);
l += h;
}
e.Graphics.DrawString(e.Node.Text, _treeView.Font, Brushes.Black,
new Rectangle(l + 3 ,t,e.Bounds.Width - (l- e.Bounds.Left) + 3,h));
}
}
private void CreateNodes()
{
var item1 = new TreeItem();
item1.text = "Node1";
item1.icons.Add(this.Icon.ToBitmap());
var node1 = CreateNode(item1);
_treeView.Nodes.Add(node1);
var item2 = new TreeItem();
item2.text = "Node2";
item2.icons.Add(this.Icon.ToBitmap());
item2.icons.Add(this.Icon.ToBitmap());
var node2 = CreateNode(item2);
_treeView.Nodes.Add(node2);
}
private TreeNode CreateNode(TreeItem item)
{
var node = new TreeNode();
//扩大下Node所属的Bounds 图标会占据一定的空间
node.Text = item.text.PadRight(item.text.Length + 3*item.icons.Count);
node.Tag = item;
return node;
}
private class TreeItem
{
public string text;
public List<Image> icons = new List<Image>();
}
}