C# winform treeview 节点展开状态的图标设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# winform treeview 节点展开状态的图标设置相关的知识,希望对你有一定的参考价值。

怎么样设置C# winform treeview 节点展开状态的图标??请问哪位老兄知道,告知一下,谢谢!
可能是我没说清楚,imageindex正常和展开状态的图标,我现在想节点折叠时显示的是一个图标,节点展开时显示另一个图标。我试过自己写一些方法来做,都不是很好用。不知道是不是有某些属性我不知道的。请指点。

如何:设置 Windows 窗体 TreeView 控件的图标

Windows 窗体 TreeView 控件可在每个节点旁显示图标。图标紧挨着节点文本的左侧。若要显示这些图标,必须使树视图与 ImageList 控件相关联

设置 TreeView 控件的 ImageList 属性为想要使用的现有 ImageList 控件。

这些属性可在设计器中使用“属性”窗口进行设置,也可在代码中设置。

设置节点的 ImageIndex 和 SelectedImageIndex 属性。ImageIndex 属性确定正常和展开状态下的节点显示的图像, SelectedImageIndex 属性确定选定状态下的节点显示的图像。

这些属性可在代码中设置,或在“树节点编辑器”中设置。若要打开“树节点编辑器”,请单击“属性”窗口中 Nodes 属性旁边的省略号按钮 ()。

ImageList myImageList = new ImageList();
myImageList.Images.Add(Image.FromFile("Default.gif"));
myImageList.Images.Add(Image.FromFile("SelectedDefault.gif"));
myImageList.Images.Add(Image.FromFile("Root.gif"));
myImageList.Images.Add(Image.FromFile("UnselectedCustomer.gif"));
myImageList.Images.Add(Image.FromFile("SelectedCustomer.gif"));
myImageList.Images.Add(Image.FromFile("UnselectedOrder.gif"));
myImageList.Images.Add(Image.FromFile("SelectedOrder.gif"));

// Assign the ImageList to the TreeView.
myTreeView.ImageList = myImageList;

// Set the TreeView control's default image and selected image indexes.
myTreeView.ImageIndex = 0;
myTreeView.SelectedImageIndex = 1;
参考技术A 如果用的是系统里的图标可以点击treeview控件右上角的三角形"套用格式";
如果你想使用一些自定义的图标可以建一个ImageList添加图标
设置TreeView的ImageList为你的ImageList
然后new TreeNode的时候注意提示,构造有个ImageIndex添你的Image编号
参考技术B 建一个ImageList添加图标
设置TreeView的ImageList为你的ImageList
然后new TreeNode的时候注意提示,构造有个ImageIndex添你的Image编号
参考技术C treeview里不是有个“套用格式”吗?
可以在那里设置展开状态的图标

c#、winform、treeview 部分节点加图片

【部门表】是存放在MS SQL SERVER 中,数据结构中的字段有“部门编号”、“部门名”、“父节点编号”分别表示“dpid"、、“dpname”、“dppid”,用树形treeview控件展示出来,用递归的方法邦定数据:(方法 BindTreeView() 放在页面初始加载时 或 放在刷新按钮上 )
//邦定treeview
public void BindTreeView()

sqlconn.GetConn().Open();//打开数据库连接

#region //初始化treeview信息
this.treeView1.Nodes.Clear();
TreeNode root = new TreeNode("Nexscien 部门列表");//添加根节点
root.Tag = 0;

root.NodeFont = new Font("宋体", 15, FontStyle.Underline);
this.treeView1.ItemHeight = 30;
this.treeView1.Nodes.Add(root);
#endregion
SqlDataAdapter sqldap = new SqlDataAdapter(msl.tvpid(), sqlconn.GetConn());
DataSet ds = new DataSet();
sqldap.Fill(ds);
DataView dv = ds.Tables[0].DefaultView;

foreach (DataRowView row in dv)

string name = row["dpname"].ToString().Trim();
int id = Convert.ToInt32(row["dpid"].ToString().Trim());
TreeNode tn = new TreeNode(name);
tn.Tag = row["dpid"].ToString();//记录部门ID

tn.NodeFont = new Font("宋体", 13, FontStyle.Underline);
TV_Addchildnodes(tn, id);
this.treeView1.Nodes.Add(tn);

sqlconn.GetConn().Close();


//子节点递归循环
public void TV_Addchildnodes(TreeNode node, int nodeID)

SqlDataAdapter sqldap = new SqlDataAdapter(msl.tvcid(nodeID), sqlconn.GetConn());
DataSet ds = new DataSet();
sqldap.Fill(ds);
DataView dv = ds.Tables[0].DefaultView;

foreach (DataRowView row in dv)

string name = row["dpname"].ToString().Trim();
int id = Convert.ToInt32(row["dpid"].ToString().Trim());
TreeNode tn = new TreeNode(name);
tn.Tag = row["dpid"].ToString();

tn.NodeFont = new Font("宋体", 11, FontStyle.Underline);
TV_Addchildnodes(tn, id);
node.Nodes.Add(tn);
//tn.Expand();



【员工表】数据结构中的字段有“员工编号”、“员工姓名”、“部门编号”、“父节点编号”分别表示“pid”、“pname”、“dpid”、“dppid”。
【部门表】和【员工表】在程序中的逻辑关系是先添加部门才能添加员工并对该员工分配部门。
问:在treeview 控件加载邦定部门表时,无论父节点、子节点,判断每一个节点如果有员工存在则让该节点添加图片,这一功能如何实现 ????

参考技术A 这个你要配合另一个控件来使用,ImageList这个控件,是图片的集合,然后就能引用了追问

怎么配合,你配合一下呗,完整点

追答

就是imagelist这个控件有一个属性,是引用图片的集合

然后

之后添加就能添加图片了,之后再treeview 的

属性引用之后就可以了

追问

这样做只是其中一步吧,还需要添加个SQL判断语句呢,这样才能让它实现有员工的节点用指定的图标,没员工的用另一指定图标

追答

对啊,这就是添加图片的思想啊,其他的你就根据你的程序自己编啊,那样才有乐趣啊

参考技术B 我记得treeview有个属性是可以加图片的,你好好找找看

以上是关于C# winform treeview 节点展开状态的图标设置的主要内容,如果未能解决你的问题,请参考以下文章

C# winform 中展开Treeview节点的问题。。。有分

c#、winform、treeview 部分节点加图片

c#的winform TreeView控件中,展开不同的节点,右边显示不同的内容,该怎么做啊,请帮帮我吧,谢谢~

C# winform开发中,如果treeview的节点太多,导致加载很慢,怎么做可以提给效率?

c# winform 里TreeView的使用

winform中,TreeView如何只展开一级节点