public class FolderTree:System.Windows.Forms.TreeView,ISupportInitialize
{
string _rootFolder = "";
bool _showFiles = true;
private System.Windows.Forms.ImageList imageList1;
private IContainer components;
bool _inInit = false;
public FolderTree()
{
Thread td = new Thread(Onstrar);
td.Start();
td.Name = "Thhread";
td.IsBackground = true;
} private void Onstrar()
{
}
[Category("Behavior"), Description("预发布的根目录树"), DefaultValue("c:\\")]
public string RootFolder
{
get { return _rootFolder; }
set {
_rootFolder = value;
if(!_inInit)
InitializeTree();
}
} [Category("Behavior"),
Description("是否显示文件."),
DefaultValue(true)]
public bool ShowFiles
{
get { return _showFiles; }
set { _showFiles = value; }
} [Browsable(false)]
public string SelectedFolder
{
get
{
if (this.SelectedNode is FolderNode)
return ((FolderNode)this.SelectedNode).FolderPath; return "";
}
} private void InitializeTree()
{
if (!this.DesignMode)
{
FolderNode rootNode = new FolderNode(_rootFolder);
LoadTree(rootNode);
this.Nodes.Clear();
this.Nodes.Add(rootNode);
}
} private void LoadTree(FolderNode folder)
{
//base.ImageList = imageList1;
string[] dirs = Directory.GetDirectories(folder.FolderPath);
foreach (string dir in dirs)
{
FolderNode tmpfolder = new FolderNode(dir);
folder.Nodes.Add(tmpfolder);
LoadTree(tmpfolder);
this.ImageList = imageList1;
folder.ImageIndex = 1;
}
if (_showFiles)
{ string[] files = Directory.GetFiles(folder.FolderPath);
foreach (string file in files)
{
FileNode fnode = new FileNode(file);
folder.Nodes.Add(fnode);
this.ImageList = imageList1;
folder.ImageIndex = 0;
} }
} public void BeginInit()
{
_inInit = true;
} public void EndInit()
{
if (_rootFolder != "")
{
InitializeTree();
}
_inInit = false;
} private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FolderTree));
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.SuspendLayout();
//
// imageList1
//
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
this.imageList1.Images.SetKeyName(0, "MenuForm.ico");
this.imageList1.Images.SetKeyName(1, "CLSDFOLD.ICO");
//
// FolderTree
//
this.LineColor = System.Drawing.Color.Black;
this.ResumeLayout(false); } }在页面上我添加了一个imagelist控件 在这里使用 后图片显示不出来 难道这样不行吗 改 求救
{
string _rootFolder = "";
bool _showFiles = true;
private System.Windows.Forms.ImageList imageList1;
private IContainer components;
bool _inInit = false;
public FolderTree()
{
Thread td = new Thread(Onstrar);
td.Start();
td.Name = "Thhread";
td.IsBackground = true;
} private void Onstrar()
{
}
[Category("Behavior"), Description("预发布的根目录树"), DefaultValue("c:\\")]
public string RootFolder
{
get { return _rootFolder; }
set {
_rootFolder = value;
if(!_inInit)
InitializeTree();
}
} [Category("Behavior"),
Description("是否显示文件."),
DefaultValue(true)]
public bool ShowFiles
{
get { return _showFiles; }
set { _showFiles = value; }
} [Browsable(false)]
public string SelectedFolder
{
get
{
if (this.SelectedNode is FolderNode)
return ((FolderNode)this.SelectedNode).FolderPath; return "";
}
} private void InitializeTree()
{
if (!this.DesignMode)
{
FolderNode rootNode = new FolderNode(_rootFolder);
LoadTree(rootNode);
this.Nodes.Clear();
this.Nodes.Add(rootNode);
}
} private void LoadTree(FolderNode folder)
{
//base.ImageList = imageList1;
string[] dirs = Directory.GetDirectories(folder.FolderPath);
foreach (string dir in dirs)
{
FolderNode tmpfolder = new FolderNode(dir);
folder.Nodes.Add(tmpfolder);
LoadTree(tmpfolder);
this.ImageList = imageList1;
folder.ImageIndex = 1;
}
if (_showFiles)
{ string[] files = Directory.GetFiles(folder.FolderPath);
foreach (string file in files)
{
FileNode fnode = new FileNode(file);
folder.Nodes.Add(fnode);
this.ImageList = imageList1;
folder.ImageIndex = 0;
} }
} public void BeginInit()
{
_inInit = true;
} public void EndInit()
{
if (_rootFolder != "")
{
InitializeTree();
}
_inInit = false;
} private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FolderTree));
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.SuspendLayout();
//
// imageList1
//
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
this.imageList1.Images.SetKeyName(0, "MenuForm.ico");
this.imageList1.Images.SetKeyName(1, "CLSDFOLD.ICO");
//
// FolderTree
//
this.LineColor = System.Drawing.Color.Black;
this.ResumeLayout(false); } }在页面上我添加了一个imagelist控件 在这里使用 后图片显示不出来 难道这样不行吗 改 求救
private void Buy_chuzhi_ka_Load(object sender, EventArgs e)
{
DataSet ds = KaidanQueryListBLL.DsqueryServiceListAtKaidanUI(LoginInfo.loginCompany.id);
treeView1.ImageList = this.imageList1;
CreateTreeView(treeView1.Nodes, ds, null);
}
/// <summary>
/// 创建DataSet的方法
/// </summary>
/// <param Name="nodes">TreeView的根节点</param>
/// <param Name="ds">Dataset数据集合</param>
/// <param Name="pid">节点的父</param>
/// add by zyl
private void CreateTreeView(TreeNodeCollection nodes, DataSet ds, string pid)
{
nodes.Clear();
string sql="";
//定义筛选条件
if (pid == null)
{
sql = string.Format("pid is null");
}
else
{
sql = string.Format("pid='{0}'", pid);
}
//从Dataset中筛选符合条件的行的集合
DataRow[] drr = ds.Tables[0].Select(sql); //遍历获得行的集合
foreach (DataRow dr in drr)
{
//创建TreeView节点
TreeNode tnode = new TreeNode();
//添加到根节点中
//设置显示的文本
//tnode.ImageUrl = "images/foldericon1.gif";
if (dr["normal_price"].ToString() != "")
{
tnode.Text = dr["Name"].ToString() + "---" + dr["normal_price"];
tnode.SelectedImageIndex = 2;
tnode.ImageIndex = 2;
}
else
{
tnode.Text = dr["Name"].ToString();
tnode.SelectedImageIndex = 1;
tnode.ImageIndex = 0;
}
tnode.Name = dr["Id"].ToString();
if (ds.Tables[0].Columns.Contains("face_value"))
{
tnode.Tag = dr["Name"].ToString() + "---" + dr["face_value"];
}
else
{
tnode.Tag = dr["Name"].ToString();
}
//递归调用方法
nodes.Add(tnode);
CreateTreeView(tnode.Nodes, ds, dr["Id"].ToString());
//从Dataset中删除已经添加的行,提高访问效率
ds.Tables[0].Rows.Remove(dr); }
}