110,534
社区成员
发帖
与我相关
我的任务
分享
public partial class MaterialBrowser : Form
{
MaterialManager materialManager;
public MaterialBrowser()
{
InitializeComponent();
materialManager = new MaterialManager();
txtDirectoryRoot.Text = materialManager.MaterialPath;
InitMaterialCategoryMenu();
}
protected void InitMaterialCategoryMenu()
{
tvLeftMenu.Nodes.Clear();
tvLeftMenu.Nodes.Add(new TreeNode("素材库目录"));
LoadDirectory(Guid.Empty, tvLeftMenu.Nodes[0]);
}
protected void LoadDirectory(Guid parentId,TreeNode node)
{
//从数据库里获取目录结构
List<CategoryInfo> categories = materialManager.GetAllCategory(parentId) as List<CategoryInfo>;
for (int i = 0; i < categories.Count; i++)
{
node.Nodes.Add(categories[i].CategoryId.ToString(), categories[i].CategoryName);
LoadDirectory(categories[i].CategoryId, node.Nodes[i]);
}
}
//获取目录下的所有图片文件
protected void LoadDirectoryFiles(Guid folderId)
{
List<Material> materials = materialManager.GetAllCategoryFiles(folderId) as List<Material>;
if (materials == null || materials.Count == 0)
{
return;
}
int index = 0;
lvMaterialFiles.Items.Clear();
images.Images.Clear();
lvMaterialFiles.View = View.LargeIcon;
ColumnHeader header = new ColumnHeader();
header.Text = "文件名";
header.Width = 150;
header.TextAlign = HorizontalAlignment.Left;
lvMaterialFiles.Columns.Add(header);
lvMaterialFiles.BeginUpdate();
foreach (Material material in materials)
{
if (material.FileExt.Equals(".jpg", StringComparison.OrdinalIgnoreCase) || material.FileExt.Equals(".jpeg", StringComparison.OrdinalIgnoreCase))
{
string file = materialManager.MaterialPath + "\\" + material.FileName; //这里的结构是E:\\Attach\\2013-1.jpg
Image image = Image.FromFile(file);
images.Images.Add(image);
images.ImageSize = new Size(150, 150);
ListViewItem listViewItem = new ListViewItem();
listViewItem.Text = material.FileName; //这里是从数据库里读出来的图片文件的名字 2013-1.jpg
listViewItem.Tag = file;
listViewItem.ImageIndex = index;
lvMaterialFiles.Items.Add(listViewItem);
lvMaterialFiles.Items[index].ImageIndex = index;
index++;
image.Dispose();
LoadDirectoryFiles(material.ParentId);
}
}
lvMaterialFiles.EndUpdate();
}
//左边的TreeView选择点击事件
private void tvLeftMenu_AfterSelect(object sender, TreeViewEventArgs e)
{
string folderId = tvLeftMenu.SelectedNode.Name;
if (!string.IsNullOrEmpty(folderId))
{
LoadDirectoryFiles(new Guid(folderId));
}
}
listViewItem.ImageIndex = index; // 此处已经指定了index
lvMaterialFiles.Items.Add(listViewItem);
lvMaterialFiles.Items[index].ImageIndex = index; // 这句为什么还要指定?