Deverpress笔记之TreeList、Grid.

DevExpress TreeList 使用Demo 代码演示了TreeList常用设置,里面有详细的注释。 立即下载

声明:此笔记仅为方便本人记忆,写的的一些小技巧,因项目工期较紧,代码未来得及整理,也并未全部在项目中采用,不一定适用于您的开发,故仅供参考之用! 如您在此控件使用过程中遇到类似问题需要解决。欢迎一起讨论。

一、TreeList的GetStateImage事件应用。
方法一:此事件用于在tree之前设置显示的图片,具体使用方法是首先在窗体上放置imagelist,设置好图片,即可在事件中判断后,选择要显示的图片的索引值即可。

  private void treeList_GetStateImage(object sender, DevExpress.XtraTreeList.GetStateImageEventArgs e) 
  
{
   CheckState check 
= GetCheckState(e.Node.Tag);
   
if(check == CheckState.Unchecked)
    e.NodeImageIndex 
= 0;
   
else if(check == CheckState.Checked)
    e.NodeImageIndex 
= 1;
   
else e.NodeImageIndex = 2;
  }



方法二:为tree中指定的节点区分现实不同的图片。
事例代码如下:

        private void roleTree_GetStateImage(object sender, DevExpress.XtraTreeList.GetStateImageEventArgs e)
        
{
            
if(e.Node.Id.ToString() == "0")
            
{
                
this.roleTree.Nodes[0].RootNode.StateImageIndex = 1;
            }

            
else
            
{
                e.NodeImageIndex 
= 0;
            }

        }


二、TreeList中运用MouseDown事件获取所选节点信息。
提取tree中的值所用事件为MouseDown,在事件中填写如下代码
private void roleTree_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        
{
            
if(e.Button == MouseButtons.Left) 
            
{
                DevExpress.XtraTreeList.TreeListHitInfo hInfo 
= roleTree.GetHitInfo(new Point(e.X, e.Y));
                
if(hInfo.HitInfoType == DevExpress.XtraTreeList.HitInfoType.StateImage)
                
{
//                  this.roleTree.DeleteNode(hInfo.Node);
                    if(MessageBox.Show("你确定要删除"+hInfo.Node[1].ToString()+"角色","提示信息",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)
                    
{
                        TB_Accounts_RolesEntity role 
= new TB_Accounts_RolesEntity();
                        role.iRoleID 
= Convert.ToInt32(hInfo.Node[1].ToString());
                        role.Retrieve();
                        role.Delete();
                        InitRoleTree();
                    }

                    
else
                    
{}
                }

                
else if(hInfo.HitInfoType == DevExpress.XtraTreeList.HitInfoType.Cell)
                
{
//                    MessageBox.Show(hInfo.Node[1].ToString());    //获取选择的iRoleID
//                    SetCheckedNode(treeList.Nodes[0].Nodes[0]); 

                    
//得到指定iRoleID的全部的vDescript的允许的Table
                    string roleID = hInfo.Node[1].ToString();
                    
string sqlString="SELECT dbo.TB_Accounts_Permissions.vDescript FROM dbo.TB_Accounts_Permissions INNER JOIN  dbo.TB_Accounts_RolePermissions ON dbo.TB_Accounts_Permissions.iPermissionID = dbo.TB_Accounts_RolePermissions.iPermissionID WHERE 1=1"; //编写SQL语句
                    sqlString +=" and dbo.TB_Accounts_RolePermissions.iRoleID = '"+roleID+"'"; 
                    
//执行SQL语句
                    DataTable dt=Query.ProcessSql(sqlString,"EasySales"); 

                    
for(int i = 0; i<dt.Rows.Count; i++)
                    
{
                        
string treeText = treeList.GetNodeByVisibleIndex(i).GetDisplayText(0).ToString();
                        
if(treeText == dt.Rows[i]["vDescript"].ToString())
                        
{
                            SetCheckedNode(treeList.Nodes[
0].Nodes[i]); 
                        }
                                
                    }




//////                    //判断treeList的行数和DataTable的行数是否一致
//////                    if(this.treeList.VisibleNodesCount.ToString()==dt.Rows.Count.ToString())
//////                    {
//////
//////                        //循环treeList的全部的vDescript的值
//////                        for(int i = 0; i<Convert.ToInt32(this.treeList.VisibleNodesCount.ToString());i++)
//////                        {
//////                            //判断treeList的vDescript的值和Table的vDescipte的值是否相等
//////                            if(this.treeList.GetNodeByVisibleIndex(i).GetDisplayText(0).ToString() != dt.Rows[i]["vDescript"].ToString())
//////                            {
//////                                MessageBox.Show("得到不同的vDescript");
////////                                Checked();
//////                            }
//////                            else
//////                            {
//////                                MessageBox.Show("得到相同的vDescript");
////////                                UnChecked();
//////                            }
//////                        }
//////                    }
//////                    else
//////                    {
//////                        MessageBox.Show("长度不一致");
//////                    }

                }

            }

        }


三、TreeList前添加CheckBox的选择框,可实现点击父节点相应子节点全部选中的效果。
TreeList中并为提供对应实现此功能的CheckBox自定义列,故必须用上面提到的GetStateImage事件添加三个(全选、部分全选、为选中)CheckBox的图片,具体样式可自己设计,然后放到窗体中的ImageList中去,触发及调用用到下面的代码:
        private CheckState GetCheckState(object obj) 
        
{
            
if(obj != null) return (CheckState)obj;
            
return CheckState.Unchecked;
        }


        
private void SetCheckedNode(string treeText)
        
{
            CheckState check 
= new CheckState();
            check 
= CheckState.Checked;
        }

        
private void SetCheckedNode(DevExpress.XtraTreeList.Nodes.TreeListNode node) 
        
{
            CheckState check 
= GetCheckState(node.Tag);
            
if(check == CheckState.Indeterminate || check == CheckState.Unchecked) check = CheckState.Checked;
            
else check = CheckState.Unchecked;
            treeList.BeginUpdate();
            node.Tag 
= check;
            SetCheckedChildNodes(node, check);
            SetCheckedParentNodes(node, check);
            treeList.EndUpdate();
        }

        
private void SetCheckedChildNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, CheckState check) 
        
{
            
for(int i = 0; i < node.Nodes.Count; i++) 
            
{
                node.Nodes[i].Tag 
= check;
                SetCheckedChildNodes(node.Nodes[i], check);
            }

        }

        
private void SetCheckedParentNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, CheckState check) 
        
{
            
if(node.ParentNode != null) 
            
{
                
bool b = false;
                
for(int i = 0; i < node.ParentNode.Nodes.Count; i++) 
                
{
                    
if(!check.Equals(node.ParentNode.Nodes[i].Tag)) 
                    
{
                        b 
= !b;
                        
break;
                    }

                }

                node.ParentNode.Tag 
= b ? CheckState.Indeterminate : check; 
                SetCheckedParentNodes(node.ParentNode, check);
            }

        }

        
private void treeList_GetStateImage(object sender, DevExpress.XtraTreeList.GetStateImageEventArgs e) 
        
{
            CheckState check 
= GetCheckState(e.Node.Tag);
            
if(check == CheckState.Unchecked)
                e.NodeImageIndex 
= 0;
            
else if(check == CheckState.Checked)
                e.NodeImageIndex 
= 1;
            
else e.NodeImageIndex = 2;
        }


        
private void treeList_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 
        
{
            
if(e.KeyData == Keys.Space) 
                SetCheckedNode(treeList.FocusedNode);
        }


        
private void treeList_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
        
{
            
if(e.Button == MouseButtons.Left) 
            
{
                DevExpress.XtraTreeList.TreeListHitInfo hInfo 
= treeList.GetHitInfo(new Point(e.X, e.Y));
                
if(hInfo.HitInfoType == DevExpress.XtraTreeList.HitInfoType.StateImage) 
                    SetCheckedNode(hInfo.Node);
            }

        }


        
private void roleTree_GetStateImage(object sender, DevExpress.XtraTreeList.GetStateImageEventArgs e)
        
{
            
if(e.Node.Id.ToString() == "0")
            
{
                
this.roleTree.Nodes[0].RootNode.StateImageIndex = 1;
            }

            
else
            
{
                e.NodeImageIndex 
= 0;
            }

        }

这样就可实现上述功能。

四、Grid中设置、获取指定Cell的值,用下面的方法:
获取:GridView.GetRowCellValue()
设置:GridView.SetRowCellValue()

更进一步的使用技巧可在软件附带的Demo中学到。
Winform中DevExpress的TreeList的入门使用示例代码.zip Winform中DevExpress的TreeList的入门使用示例代码,Winform中DevExpress的TreeList的入门使用示例代码 立即下载

相关推荐

当windows安装git时出现以下错误提示

Windows安装Git时出现多个系统配置设置失败错误(exit code 4294967295),提示包括无法设置textconv、LFS过滤器和SSL等配置项。关键问题在于scalar.exe版本不兼容,系统提示"该版本的scalar.exe与你运行的Windows版本不兼容"。解决方案是检查程序版本是否正确,下载与Windows系统兼容的正确版本重新安装即可。

沧澜的博客 1875

DevExpress--TreeList

DevExpress组件–TreeList篇拉入一个TreeList控件,在属性栏设置KeyFieldName和ParentFieldName。 或者代码实现:treeList1.KeyFieldName=""; treeList1.ParentFieldName=""; 绑定数据时,只需指定DataSource为对应 的DataTable,指定KeyFieldName为表主键字段,ParentF

冉生Roman的博客 1194

实战指南!基于STM32的智能环境监测系统(代码+硬件设计+云端控制)

本文详细介绍了基于STM32的智能环境监测系统的设计与实现,包括硬件选型、电路设计、软件架构和云端控制。系统通过DHT11温湿度传感器和MQ-2烟雾传感器实时监测环境数据,STM32F103C8T6主控芯片处理数据并通过ESP8266上传至中国移动物联网平台,支持手机APP远程监控。项目成本低、稳定性高,适合智能家居和环境监测应用。

weixin_29194817的博客 433

DevExpress中TreeList控件的使用方法

DevExpress中树形结构的显示需要用到TreeList控件,但是区别于其他的第三方控件,TreeList的数据源绑定方式有些特别,它主要利用子节点编号(Id)和父节点编号(ParentId)确定各个树节点的从属关系,示例代码如下: using System; using System.Collections.Generic; using System.ComponentModel; usin...

HerryDong的博客 1万+

从SD更新字库到FLASH,再用LCD显示

用Flash当字库存储载体。思路是先将要用到的字库文件存在SD卡,然后存储到Flash,LCD显示时候从Flash中读取 还挺顺利的,移植的原子的程序,自己稍加修改,主要是我的液晶屏函数,Flash读写函数,还有存储文件的flash地址不一样。一晚上搞定,大小字体都OK。挺高兴哈哈。这几天忙工作事情有点耽搁了学习进展嘿嘿 在text.c的showstr函数中char的字体颜色随意设置的,可以显...

weixin_30505751的博客 914

从ADC校准到精准测量:避开PY32F030小信号采样的那些坑

本文深入探讨了PY32F030微控制器进行ADC小信号采样时面临的挑战与解决方案。从硬件设计、软件滤波算法到系统级校准策略,详细分析了如何避开常见陷阱,实现精准测量,特别是在25mV以下小信号场景中的应用实践。

ujm567890的博客 757

devexpress treelist ,treelist checkbox,treelist右击菜单使用

winform devexpress treelist checkbox 右击

卢小亦的博客 1644

win11本地部署openclaw实操第5集-X11图形化界面搭建,让WSL2“看见”世界

本文介绍了在WSL2中实现图形界面(GUI)的方法。由于WSL2默认没有图形界面,需要使用X11服务器作为"翻译显示器",将Linux程序的图形指令渲染到Windows窗口中。推荐使用VcXsrv作为X11服务器,详细说明了其安装和配置步骤,包括选择"One large window"显示模式、禁用访问控制等关键设置。随后在Ubuntu中安装轻量级xfce4桌面环境,并通过设置DISPLAY环境变量将图形输出指向VcXsrv。最终通过startxfce4命令成功在Vc

weixin_44626085的博客 811

[DevExpress]TreeList显示[+] [-] 样式

预设显示下拉三角形样式 要设置[+] [-] 样式,需要设置TreeList的两个皮肤属性: treeList1.LookAndFeel.UseDefaultLookAndFeel = false; treeList1.LookAndFeel.UseWindowsXPTheme = true; 设置完:

qq_15696177的博客 508

OFDM时频脉冲形状与子载波正交性的理解

从多载波调制的角度来理解子载波间正交,首先要明确OFDM默认的脉冲成型是时域矩形窗,时域上每个子载波 ej2πfnte^{j2πf_nt}ej2πfn​t 都被一个矩形窗脉冲gT(t)g_T(t)gT​(t)成型。其次,OFDM子载波间隔 等于 OFDM符号周期的倒数,这是子载波正交的条件。 ​ 根据时频脉冲形状,可以从时域上理解如左图(注意是矩形脉冲 乘 复指数),从频域上理解如右图(sinc脉冲 卷 频点)。 ​

weixin_43803202的博客 2214

stm32项目实战(1)光敏电阻的介绍和使用

文章目录前言一、光敏电阻介绍二、cubeMX配置三、代码说明总结 前言 本篇文章我们讲带大家了解光敏电阻的使用 一、光敏电阻介绍 下面是4线光敏电阻实物图 产品接线说明: 1、VCC 接电源正极 3.3-5V 2、GND 接电源负极 3、DO TTL 开关信号输出 (配置为输出模式) 4、AO 模拟信号输出(ADC采样通道) 光敏电阻主要用于检测周围的光照强度,光照强度发生变化那么ADC采样的值也会发送变化。 二、cubeMX配置 简单的配置我们就不多说了主要是ADC采样的配置 这里我采用的是ADC1通道

m0_49476241的博客 1万+

Deverpress之TreeList、Grid

<br />一、TreeList的GetStateImage事件应用。 <br />方法一:此事件用于在tree之前设置显示的图片,具体使用方法是首先在窗体上放置imagelist,设置好图片,即可在事件中判断后,选择要显示的图片的索引值即可。 <br /> <br /> <br />  private void treeList_GetStateImage(object sender, <br />DevExpress.XtraTreeList.GetStateImageEventArgs e)  <br

yudehui的专栏 1025

引入高分辨率特征层保持的YOLOv10小目标增强:从思路到完整实现

大概两个月前,我在做一个无人机航拍图像检测的项目,目标是识别图片里的小型车辆和行人。用的数据集是VisDrone,相信做小目标检测的朋友对这个数据集都不陌生。一开始我直接跑了官方YOLOv10的代码,结果在tiny vehicle这一类上mAP50只有可怜的0.312。那些小目标基本就是几个像素点,YOLOv10在三次下采样之后,这些小目标的特征几乎就消失不见了。 后来我折腾了大概三周,尝试了各种方法:改anchor、调loss权重、做数据增强、甚至考虑过换检测头。最后发现最有效的还是引入一个高分辨率特征

YOLO 49

DevExpress TreeList 全选和反选 z

/// <summary> /// 全选树 /// </summary> /// <param name="tree">树控件</param> /// <param name="nodes">节点集合</param> public vi...

afeyfre41671的博客 622

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

DevExpress

1. DevExpress.XtraTreeList控件         将其简称为tree,tree其实就是一个树表控件,他像树一样包含具有父子关系的若干节点,同时每个节点又是一个带有多个字段的记录。其用法非常简单方便,只需要为其配置带有父子关系的数据源,其就可以按照树的形式进行显示。 1.1 DevExpress.XtraTreeList配置数据源    数据源一般是一个二维表,可以是数...

weixin_34162228的博客 237

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Deverpress笔记之TreeList复选框实现

 TreeList] Deverpress笔记之TreeList复选框实现声明:此笔记仅为方便本人记忆,写的的一些小技巧,因项目工期较紧,代码未来得及整理,也并未全部在项目中采用,不一定适用于您的开发,故仅供参考之用! 如您在此控件使用过程中遇到类似问题需要<span class="t_tag" onclick="function onclick(){tagshow(e

忆尘 4693

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Devpress TreeList 子项某个单元格不允许编辑。下拉树某单元格不允许编辑

下拉树某个单元格不允许编辑。 下拉树的事件可以手动写在 load 也可以 在设置器选择。手动写代码如下: this.treeList1.ShowingEditor += new System.ComponentModel.CancelEventHandler(this.treeList1_ShowingEditor); 方法: private void treeList1_Showing...

广信—黄旭林的博客 1641

DevExpress之TreeList复选框实现

概述:本文主要讲述DevExpress TreeList复选框实现,希望对大家有帮助。 一、TreeList的GetStateImage事件应用 方法一:此事件用于在tree之前设置显示的图片,具体使用方法是首先在窗体上放置imagelist,设置好图片,即可在事件中判断后,选择要显示的图片的索引值即可。 1 2 3 4 5 6 ...

donghang9366的博客 689

DevExpress控件XtraTreeList的使用心得

数据展示 数据源绑定 需要设置KeyFieldName和ParentFieldName后绑定数据 treeList1.DataSource = dataTable1; 且KeyFieldName列不能存在重复的数据 手动增加节点 var node = treeList1.AppendNode("", null); 注:该方法有多个重载,可灵活设置节点的父节点,图标,勾选状态,

davinciyxw的专栏 2万+

DevExpress TreeList使用心得

最近做项目新增光纤线路清查功能模块,思路和算法已经想好了,些代码时候居然在一个控件上纠结了好长的时间,虽然后来搞定了,但是好记性不然烂笔头,还是写下来,以后要用到的时候直接翻就行,帮助文档看得比较纠结,还是自己写的好。往往当时会用了,一段时间没用后再用的时候有要翻帮助文档或网上搜,纠结很久。我们学东西的时候一般不应该花过多精力和时间到控件或框架上,但是做项目要的是结果。记得有次去面试败在机试上...

weixin_30607029的博客 819

TreeList的GetStateImage事件应用

方法一:此事件用于在tree之前设置显示的图片,具体使用方法是首先在窗体上放置imagelist,设置好图片,即可在事件中判断后,选择要显示的图片的索引值即可。 private void treeList_GetStateImage(object sender,DevExpress.XtraTreeList.GetStateImageEventArgs e)     {    CheckSt

1390
上一篇: 在学习委托的过程中搜集到了不少好文章,整理如下。
下一篇: 日期+时间段检索的SQL语句
pboot
博客等级 码龄21年 1粉丝 25原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值