请问怎么动态改换treeview的节点小图标 可以先把想改变的图标及改后的图标都放在listView控件中.然后在写程序时动态改变TreeView的图标索引值就可以了. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该也可以放在 ImageList 吧? 把图标放在ImageList里面。什么时候想改变图标,设置节点的ImageIndex属性就行了!!! 1) 先CreateDeptImageList(); private void CreateDeptImageList() { try { ImageList TreeviewIL = new ImageList(); System.Drawing.Image imageDeptTree01 = Image.FromFile(System.IO.Directory.GetCurrentDirectory()+"\\DeptTree01.ico"); System.Drawing.Image imageDeptTree02 = Image.FromFile(System.IO.Directory.GetCurrentDirectory()+"\\DeptTree02.ico"); System.Drawing.Image imageDeptTree03 = Image.FromFile(System.IO.Directory.GetCurrentDirectory()+"\\DeptTree03.ico"); System.Drawing.Image imageDeptTree04 = Image.FromFile(System.IO.Directory.GetCurrentDirectory()+"\\DeptTree04.ico"); TreeviewIL.Images.Add(imageDeptTree01); TreeviewIL.Images.Add(imageDeptTree02); TreeviewIL.Images.Add(imageDeptTree03); TreeviewIL.Images.Add(imageDeptTree04); this.tvwActAssign.ImageList = TreeviewIL; } catch(Exception ex) { ex.ToString(); } }2) 再使用递归调用显示子树,InitDeptTree(tvwActAssign.Nodes,"1"); private void InitDeptTree(TreeNodeCollection Nds,string ParentId) { try { //建树的基本思路是:从根节点开始递归调用显示子树. ExecuteDBCommand.ExeDBCmd ExeDBSP=new ExecuteDBCommand.ExeDBCmd(); DataSet ds=new DataSet(); ds=ExeDBSP.FillComboBoxContents("InitActAssignDeptTree"); DataView dv=new DataView(); TreeNode tmpNd; string intId,SelEmpActNo; dv.Table=ds.Tables[0]; string ft="ParentDeptCode=" + ParentId.Trim(); dv.RowFilter=ft.ToString(); foreach(DataRowView drv in dv) { tmpNd=new TreeNode(); tmpNd.Tag=drv["DeptCode"].ToString(); tmpNd.Text=drv["DeptName"].ToString(); if (tmpNd.Tag.ToString().Length>2) { if (tmpNd.Tag.ToString().Substring(0,2)=="#$") { DataSet dsActNo=new DataSet(); dsActNo=ExeDBSP.GetSelectedEmpActNo(tmpNd.Tag.ToString(),tmpNd.Text.Trim()); SelEmpActNo=dsActNo.Tables[0].Rows[0][0].ToString(); tmpNd.Text=tmpNd.Text+SelEmpActNo; if (SelEmpActNo.IndexOf("无帐套",0,SelEmpActNo.Length)!=-1){tmpNd.ForeColor=System.Drawing.Color.Red;} tmpNd.ImageIndex =3;tmpNd.ExpandAll(); } else {tmpNd.ImageIndex =1;tmpNd.ExpandAll();} } else {tmpNd.ImageIndex =1;tmpNd.ExpandAll();} Nds.Add(tmpNd); intId=drv["ParentDeptCode"].ToString(); InitDeptTree(tmpNd.Nodes,tmpNd.Tag.ToString()); } } catch(Exception ex) { ex.ToString(); } }3)注意:ImageIndex和SelectedImageIndex是不同的. C#反射问题 前台怎么调用后台变量? c#里面不懂的 C# 三层中的实体类有什么用呢? 如何才以把string转化为Hex,请高手指教 各位,在datagrid中如何进行多行选择,谢谢 高分求解,关于在C#里为类写事件的例子 [问][C#]如何将png嵌入并读取成Texture2D? MVC设计模式主要用于开发Web,而不适合开发胖客户机(Application)吗? 帮我看看这个那里有问题 C#做控件碰到问题,在线等待 一个奇怪的问题
private void CreateDeptImageList()
{
try
{
ImageList TreeviewIL = new ImageList();
System.Drawing.Image imageDeptTree01 = Image.FromFile(System.IO.Directory.GetCurrentDirectory()+"\\DeptTree01.ico");
System.Drawing.Image imageDeptTree02 = Image.FromFile(System.IO.Directory.GetCurrentDirectory()+"\\DeptTree02.ico");
System.Drawing.Image imageDeptTree03 = Image.FromFile(System.IO.Directory.GetCurrentDirectory()+"\\DeptTree03.ico");
System.Drawing.Image imageDeptTree04 = Image.FromFile(System.IO.Directory.GetCurrentDirectory()+"\\DeptTree04.ico");
TreeviewIL.Images.Add(imageDeptTree01);
TreeviewIL.Images.Add(imageDeptTree02);
TreeviewIL.Images.Add(imageDeptTree03);
TreeviewIL.Images.Add(imageDeptTree04);
this.tvwActAssign.ImageList = TreeviewIL;
}
catch(Exception ex)
{
ex.ToString();
}
}
2) 再使用递归调用显示子树,InitDeptTree(tvwActAssign.Nodes,"1");
private void InitDeptTree(TreeNodeCollection Nds,string ParentId)
{
try
{
//建树的基本思路是:从根节点开始递归调用显示子树.
ExecuteDBCommand.ExeDBCmd ExeDBSP=new ExecuteDBCommand.ExeDBCmd();
DataSet ds=new DataSet();
ds=ExeDBSP.FillComboBoxContents("InitActAssignDeptTree");
DataView dv=new DataView();
TreeNode tmpNd;
string intId,SelEmpActNo;
dv.Table=ds.Tables[0];
string ft="ParentDeptCode=" + ParentId.Trim();
dv.RowFilter=ft.ToString();
foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();
tmpNd.Tag=drv["DeptCode"].ToString();
tmpNd.Text=drv["DeptName"].ToString();
if (tmpNd.Tag.ToString().Length>2)
{
if (tmpNd.Tag.ToString().Substring(0,2)=="#$")
{
DataSet dsActNo=new DataSet();
dsActNo=ExeDBSP.GetSelectedEmpActNo(tmpNd.Tag.ToString(),tmpNd.Text.Trim());
SelEmpActNo=dsActNo.Tables[0].Rows[0][0].ToString();
tmpNd.Text=tmpNd.Text+SelEmpActNo;
if (SelEmpActNo.IndexOf("无帐套",0,SelEmpActNo.Length)!=-1){tmpNd.ForeColor=System.Drawing.Color.Red;}
tmpNd.ImageIndex =3;tmpNd.ExpandAll();
}
else {tmpNd.ImageIndex =1;tmpNd.ExpandAll();}
}
else {tmpNd.ImageIndex =1;tmpNd.ExpandAll();}
Nds.Add(tmpNd);
intId=drv["ParentDeptCode"].ToString();
InitDeptTree(tmpNd.Nodes,tmpNd.Tag.ToString());
}
}
catch(Exception ex)
{
ex.ToString();
}
}
3)注意:ImageIndex和SelectedImageIndex是不同的.