c#怎么在treeview列表的加号或减号前面的图片

c#怎么在treeview列表的加号或减号前面的图片,第1张

先在窗体中添加一个ImageList控件,然后往里添加图片,

之后再代码中写

TreeNode node=new TreeNode("aa")//这个aa就代表你要加的第一个节点的名字

node.ImageIndex=0//这个0是和你 ImageList中那些图片的索引一一对应的

this.TreeView.Nodes.Add(node)//再你的treeview中添加这个节点

只要把属性设置为OwnerDrawAll,即可完全自绘节点外观。

相关属性——DrawNode事件参数DrawTreeNodeEventArgs,事件参数中包含绘制节点的Graphics对象,节点边界Bounds属性,可以根据此属性获得要绘制的节点在TreeView控件中的坐标及大小。State属性,返回要绘制的节点状态,把它和枚举TreeNodeStates中的成员按位运算,即可获得要绘制的节点的当前状态。

新建C# Windows应用程序,添加TreeView控件,命名为treeViewMenu,把DrawNode属性设为OwnerDrawAll,由于需要点击节点所在行即获得NodeClick行为,因此把FullRowSelect设为true,ShowLine设为false(当ShowLine属性为true时,FullRowSelect属性被忽略)。

//增加节点,递归调用

//table 来自数据库中设定好的菜单模块,结构为ID——节点代码,Name——节点名称,Parent——父节点代码

//调用入口为:AddNote(treeViewMenu.Nodes,"0",table)

private void AddNode(TreeNodeCollection nodes,string parent,DataTable table)

m_TreeCtrl Control CTreeCtrl

同时利用“MESSAGES MAP”为各命令按钮增加控制功能函数。

然后在代码文件VCTREEDlg.CPP中分别加入如下控制代码:

(1)在文件开始处增加图像列表定义

CImageList Cil1,Cil2//大小图标像列表

(2)在初始化文件开始处增加代码

BOOL CVCTREEDlg::OnInitDialog()

{ CDialog::OnInitDialog()

.....//原来其它代码

// TODO: Add extra initialization here

// 此处开始增加代码

CVCTREEApp *pApp=(CVCTREEApp *)AfxGetApp()//创建图象列表

Cil1.Create(16,16,ILC_COLOR,2,2)

Cil1.Add(pApp->LoadIcon(IDI_PM))

Cil1.Add(pApp->LoadIcon(IDI_CJ))

m_TreeCtrl.SetImageList(&Cil1,TVSIL_NORMAL) //设置图象列表

DWORD dwStyles=GetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE)//获取树控制原风格

dwStyles|=TVS_EDITLABELS|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT

SetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE,dwStyles)//设置风格

char * CJ[4]={"玉溪卷烟厂","云南卷烟厂","沈阳卷烟厂","成都卷烟厂"}//根数据名称

char * PM[4][5]={

{"红梅一","红梅二","红梅三","红梅四","红梅五"},//产品数据项

{"白梅一","白梅二","白梅三","白梅四","白梅五"},

{"绿梅一","绿梅二","绿梅三","绿梅四","绿梅五"},

{"青梅一","青梅二","青梅三","青梅四","青梅五"}}

int i,j

HTREEITEM hRoot,hCur//树控制项目句柄

TV_INSERTSTRUCT TCItem//插入数据项数据结构

TCItem.hParent=TVI_ROOT//增加根项

TCItem.hInsertAfter=TVI_LAST//在最后项之后

TCItem.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE//设屏蔽

TCItem.item.pszText="数据选择"

TCItem.item.lParam=0//序号

TCItem.item.iImage=0//正常图标

TCItem.item.iSelectedImage=1//选中时图标

hRoot=m_TreeCtrl.InsertItem(&TCItem)//返回根项句柄

for(i=0i<4i++){//增加各厂家

TCItem.hParent=hRoot

TCItem.item.pszText=CJ[i]

TCItem.item.lParam=(i+1)*10//子项序号

hCur=m_TreeCtrl.InsertItem(&TCItem)

for(j=0j<5j++){//增加各产品

TCItem.hParent=hCur

TCItem.item.pszText=PM[i][j]

TCItem.item.lParam=(i+1)*10+(j+1)//子项序号

m_TreeCtrl.InsertItem(&TCItem)

}

m_TreeCtrl.Expand(hCur,TVE_EXPAND)//展开树

}

m_TreeCtrl.Expand(hRoot,TVE_EXPAND)//展开上一级树

return TRUE // return TRUE unless you set the focus to a control

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11926004.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存