C# 如何使用图像创建多列树状视图
我有个问题。我正在使用C# 如何使用图像创建多列树状视图,c#,winforms,treeview,treelist,C#,Winforms,Treeview,Treelist,我有个问题。我正在使用BrightIdeasSoftware.TreeListView在我的windows窗体中创建treeview,我也参考了,但我没有成功创建它。你能告诉我我在创建树视图时犯了什么错误吗。完整的描述如下 我想添加动态可折叠面板,并在其中添加树 数据将根据可折叠面板标题id显示在面板中 我有一个父id,可以有多个子id “状态”列将显示一个图像 下面是我用来创建treeview的代码 class Node { public strin
BrightIdeasSoftware.TreeListView
在我的windows窗体中创建treeview,我也参考了,但我没有成功创建它。你能告诉我我在创建树视图时犯了什么错误吗。完整的描述如下
- 我想添加动态可折叠面板,并在其中添加树李>
- 数据将根据可折叠面板标题id显示在面板中李>
- 我有一个父id,可以有多个子id
- “状态”列将显示一个图像
class Node
{
public string Name { get; private set; }
public string Column1 { get; private set; }
public string Column2 { get; private set; }
public List<Node> Children { get; private set; }
public Node(string name, string col1, string col2)
{
this.Name = name;
this.Column1 = col1;
this.Column2 = col2;
this.Children = new List<Node>();
}
}
private void InitializeFristTabValue()
{
if (_UserDAC == null)
_UserDAC = new UserDAC();
try
{
DataTable dtUserGroup = _UserDAC.GetAllSECGROUPS(appDirectory, this.FindForm().Name, "InitializeFristTabValue()").Tables[0];
CommonDataGridBind cc = new CommonDataGridBind();
cc.GridviewGrouping(dtUserGroup, kryptonOutlookGridUserGroup, true, "GROUPID");
DataTable SEC_Info = _UserDAC.GetSECAPPINFO(appDirectory, this.FindForm().Name, "InitializeFristTabValue()").Tables[0];
int Location = 0;
foreach (DataRow dtrow in SEC_Info.Rows)
{
int APPID;
int.TryParse(dtrow["APPID"].ToString(), out APPID);
collapsiblePanelobj = new CollapsiblePanel();
if (Location == 0)
{
collapsiblePanelobj.Collapse = false;
//collapsiblePanelobj.Dock = System.Windows.Forms.DockStyle.Fill;
this.collapsiblePanelobj.Size = new System.Drawing.Size(1000, 150);
//DataTable SEC_InfoTreeView = _UserDAC.GetAPPITEMSbyAPPID(APPID, appDirectory, this.FindForm().Name, "InitializeFristTabValue()").Tables[0];
// ADDNode(APPID);
treeListView1.Dock = System.Windows.Forms.DockStyle.Fill;
//_panelBox.Anchor = AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Left;
//_panelBox.Controls.Add(treeListView1);
//collapsiblePanelobj.Controls.Add(_panelBox);
collapsiblePanelobj.Controls.Add(treeListView1);
}
else
collapsiblePanelobj.Collapse = true;
Location = Location + 30;
collapsiblePanelobj.Name = dtrow["APPNAME"].ToString() + dtrow["APPID"].ToString();
collapsiblePanelobj.HeaderText = "PROGRAM: " + dtrow["APPNAME"].ToString();
collapsiblePanelobj.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
collapsiblePanelobj.BackColor = System.Drawing.Color.Transparent;
collapsiblePanelobj.HeaderCornersRadius = 5;
collapsiblePanelobj.HeaderFont = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold);
collapsiblePanelobj.HeaderImage = null;
collapsiblePanelobj.HeaderTextColor = System.Drawing.Color.Black;
collapsiblePanelobj.Location = new System.Drawing.Point(10, Location);
collapsiblePanelobj.RoundedCorners = true;
//this.collapsiblePanelobj.Dock = System.Windows.Forms.DockStyle.Fill;
this.collapsiblePanelobj.Size = new System.Drawing.Size(1000, 150);
collapsiblePanelobj.UseAnimation = true;
InitializeData(APPID);
FillTree();
AddTree();
panel1.Controls.Add(collapsiblePanelobj);
// GrpBoxUserGroupInfo.Controls.Add(collapsiblePanelobj);
}
}
catch (Exception ex)
{
LogsWrite(ex, appDirectory, this.FindForm().Name, "InitializeFristTabValue()");
}
}
public void ADDNode()
{
AddTree();
InitializeData();
FillTree();
}
private void AddTree()
{
treeListView1 = new BrightIdeasSoftware.TreeListView();
treeListView1.Dock = DockStyle.Fill;
this.Controls.Add(treeListView1);
}
private void InitializeData()
{
UserDAC _UserDAC = new UserDAC();
DataTable SEC_InfoTreeView = _UserDAC.GetAPPITEMSbyAPPID(2, "", this.FindForm().Name, "InitializeFristTabValue()").Tables[0];
data = new List<Node> {};
var parent1 = new Node("User Name ", "State ", "Static Caption ");
for (int i = 0; i < SEC_InfoTreeView.Rows.Count; i++)
{
int PrentID = Convert.ToInt32(SEC_InfoTreeView.Rows[i]["PARENTID"]);
if (PrentID == 0 && Convert.ToInt32(SEC_InfoTreeView.Rows[i]["INDENT"]) == 0)
{
data.Add(parent1);
var parentAdd = new Node(Convert.ToString(SEC_InfoTreeView.Rows[i]["USERNAME"]), "", Convert.ToString(SEC_InfoTreeView.Rows[i]["ACAPTION"]));
parent1 = parentAdd;
}
else if (PrentID != 0 && Convert.ToInt32(SEC_InfoTreeView.Rows[i]["INDENT"]) == 2)
{
parent1.Children.Add(new Node(Convert.ToString(SEC_InfoTreeView.Rows[i]["USERNAME"]), "", Convert.ToString(SEC_InfoTreeView.Rows[i]["ACAPTION"])));
}
}
}
private void FillTree()
{
// this.treeListView.SmallImageList = imageList1;
// set the delegate that the tree uses to know if a node is expandable
// treeListView1.Margin = new System.Windows.Forms.Padding(2, 1000, 2, 2);
treeListView1.CanExpandGetter = x => (x as Node).Children.Count > 0;
// set the delegate that the tree uses to know the children of a node
treeListView1.ChildrenGetter = x => (x as Node).Children;
// create the tree columns and set the delegates to print the desired object proerty
var nameCol = new BrightIdeasSoftware.OLVColumn("User Name", "Name");
nameCol.AspectGetter = x => (x as Node).Name;
nameCol.Width = treeListView1.Width / 3;
var col1 = new BrightIdeasSoftware.OLVColumn("State", "Column1");
col1.AspectGetter = x => (x as Node).Column1;
col1.Width = treeListView1.Width / 3;
var col2 = new BrightIdeasSoftware.OLVColumn("Static Caption", "Column2");
col2.AspectGetter = x => (x as Node).Column2;
col2.Width = treeListView1.Width / 3;
// add the columns to the tree
treeListView1.Columns.Add(nameCol);
treeListView1.Columns.Add(col1);
treeListView1.Columns.Add(col2);
// set the tree roots
this.treeListView1.Roots = data;
}
类节点
{
公共字符串名称{get;private set;}
公共字符串Column1{get;private set;}
公共字符串Column2{get;private set;}
公共列表子项{get;private set;}
公共节点(字符串名称、字符串col1、字符串col2)
{
this.Name=Name;
this.Column1=col1;
this.Column2=col2;
this.Children=新列表();
}
}
private void InitializeFristTabValue()
{
如果(_UserDAC==null)
_UserDAC=新的UserDAC();
尝试
{
DataTable dtUserGroup=_UserDAC.GetAllSECGROUPS(appDirectory,this.FindForm().Name,“InitializeFristTabValue()”)。表[0];
CommonDataGridBind cc=新的CommonDataGridBind();
cc.GridviewGrouping(dtUserGroup,kryptonOutlookGridUserGroup,true,“GROUPID”);
DataTable SEC_Info=_UserDAC.GetSECAPPINFO(appDirectory,this.FindForm().Name,“InitializeFristTabValue()”)。表[0];
int位置=0;
foreach(SEC_信息行中的DataRow dtrow)
{
int-APPID;
int.TryParse(dtrow[“APPID”].ToString(),out-APPID);
可折叠面板OBJ=新的可折叠面板();
如果(位置==0)
{
collapsablepanelobj.Collapse=false;
//可折叠面板obj.Dock=System.Windows.Forms.DockStyle.Fill;
this.collappablepanelobj.Size=新系统图纸尺寸(1000150);
//DataTable SEC_InfoTreeView=_UserDAC.GetAPPITEMSbyAPPID(APPID,appDirectory,this.FindForm().Name,“InitializeFristTabValue()”)。表[0];
//ADDNode(APPID);
treeListView1.Dock=System.Windows.Forms.DockStyle.Fill;
//_panelBox.Anchor=主播样式。顶部|主播样式。右侧|主播样式。底部|主播样式。左侧;
//_panelBox.Controls.Add(treeListView1);
//可折叠PanelObj.Controls.Add(\u panelBox);
可折叠面板对象控件添加(treeListView1);
}
其他的
collapsablepanelobj.Collapse=true;
位置=位置+30;
collappablepanelobj.Name=dtrow[“APPNAME”].ToString()+dtrow[“APPID”].ToString();
collapsablepanelobj.HeaderText=“程序:”+dtrow[“APPNAME”].ToString();
可折叠面板对象锚=((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|系统、窗口、窗体、主播样式(左)
|System.Windows.Forms.AnchorStyles.Right);
可折叠面板obj.BackColor=System.Drawing.Color.Transparent;
可折叠面板OBJ.HeaderCornerRadius=5;
collapsablepanelobj.HeaderFont=新的System.Drawing.Font(“Microsoft无衬线”,8.25F,System.Drawing.FontStyle.Bold);
可折叠面板obj.HeaderImage=null;
可折叠面板OBJ.HeaderTextColor=System.Drawing.Color.Black;
可折叠面板对象位置=新系统图纸点(10,位置);
可折叠面板OBJ.RoundedCorners=真;
//this.collapsablepanelobj.Dock=System.Windows.Forms.DockStyle.Fill;
this.collappablepanelobj.Size=新系统图纸尺寸(1000150);
collapsablepanelobj.UseAnimation=true;
初始化数据(APPID);
FillTree();
AddTree();
panel1.Controls.Add(可折叠panelobj);
//GrpBoxUserGroupInfo.Controls.Add(可折叠面板对象);
}
}
捕获(例外情况除外)
{
LogsWrite(例如,appDirectory,this.FindForm().Name,“InitializeFristTabValue()”;
}
}
public void ADDNode()
{
AddTree();
初始化数据();
FillTree();
}
私有void AddTree()
{
treeListView1=新的BrightIdeasSoftware.TreeListView();
treeListView1.Dock=DockStyle.Fill;
this.Controls.Add(treeListView1);
}
private void InitializeData()
{
UserDAC_UserDAC=newuserdac();
DataTable SEC_InfoTreeView=_UserDAC.GetAPPITEMSbyAPPID(2,“,this.FindForm().Name,“InitializeFristTabValue()”)。表[0];
数据=新列表{};
var parent1=新节点(“用户名”、“状态”、“静态标题”);
对于(int i=0;i