当前位置: 首页 > news >正文

[C#][DevPress]事件委托的使用

先要在代码的最前面声明一下事件、委托

delegate TreeListNode SetTreeNodeHandler(object data, TreeListNode node);
event SetTreeNodeHandler AddTreeNode;

在窗体类的构造函数中绑定事件

public UserCheckItem()
{
    InitializeComponent();
    AddTreeNode  = new SetTreeNodeHandler(TreeEvent);
}

在窗体的Load事件中添加

private void UserCheckItem_Load(object sender, EventArgs e)
{
    Thread th = new Thread(new ThreadStart(LoadTree1));
    th.IsBackground = true;
    th.Start();
}
void LoadTree1()
{
    try
    {
        DataTable dt = bll1.GetCorpCategoryList1();
        if (dt != null && dt.Rows.Count > 0)
        {
            for (int i = 0; i < dt.Rows.Count; i  )
            {
                if (dt.Rows[i]["Corp_Cate_Code"].ToString() == "Z")
                {
                    continue;
                }

                dt.Rows[i]["Corp_Cate_Name"] = Tools.Decrypt(dt.Rows[i]["Corp_Cate_Name"].ToString());
                //TreeListNode treenode = treeList1.AppendNode(new object[] { dt.Rows[i]["Corp_Cate_Name"].ToString() }, null);
                TreeListNode treenode = treeList1.Invoke(AddTreeNode, new object[] { dt.Rows[i]["Corp_Cate_Name"] }, null) as TreeListNode;
                treenode.Tag = dt.Rows[i]["Corp_Cate_Code"].ToString();
                treenode.Expanded = false;
                CreateChildNodes(treenode);
            }
        }
    }
    catch (Exception ex)
    {
        XtraMessageBox.Show("加载列表失败:"   ex.Message, "友情提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
}
private void CreateChildNodes(TreeListNode treenode)
{
    DataTable dt = bll2.GetCheckTableList1(treenode.Tag.ToString(), SysEnum.TableIsPublic.N);
    if (dt != null && dt.Rows.Count > 0)
    {
        for (int i = 0; i < dt.Rows.Count; i  )
        {
            dt.Rows[i]["Check_Tab_Name"] = Tools.Decrypt(dt.Rows[i]["Check_Tab_Name"].ToString());
            //TreeListNode tempNode = treeList1.AppendNode(new object[] { dt.Rows[i]["Check_Tab_Name"].ToString() }, treenode);
            TreeListNode tempNode = treeList1.Invoke(AddTreeNode, new object[] { dt.Rows[i]["Check_Tab_Name"] }, treenode) as TreeListNode;
            tempNode.Tag = dt.Rows[i]["Check_Tab_Code"].ToString();
            CreateChildNodes1(tempNode);
        }
    }
}
private void CreateChildNodes1(TreeListNode treenode)
{
    DataTable dt = bll3.GetCheckItemsList1(treenode.Tag.ToString(), SysEnum.TableIsPublic.A);
    if (dt != null && dt.Rows.Count > 0)
    {
        for (int i = 0; i < dt.Rows.Count; i  )
        {
            dt.Rows[i]["Check_Item_Name"] = Tools.Decrypt(dt.Rows[i]["Check_Item_Name"].ToString());
            //TreeListNode tempNode = treeList1.AppendNode(new object[] { dt.Rows[i]["Check_Item_Name"].ToString() }, treenode);
            TreeListNode tempNode = treeList1.Invoke(AddTreeNode, new object[] { dt.Rows[i]["Check_Item_Name"] }, treenode) as TreeListNode;
            tempNode.Tag =
                dt.Rows[i]["Check_Item_Code"].ToString()   ";"  
                Convert.ToInt32(dt.Rows[i]["Check_Item_IsPublic"])  
                treenode.Tag.ToString();
            //dt.Rows[i]["Check_Item_Code"].ToString();

            CreateChildNodes2(tempNode);
        }
    }
}
private void CreateChildNodes2(TreeListNode treenode)
{
    object[] tt = treenode.Tag.ToString().Split(';');
    DataTable dt = bll4.GetCheckContentList1(tt[0].ToString(), tt[1]);
    if (dt != null && dt.Rows.Count > 0)
    {
        for (int i = 0; i < dt.Rows.Count; i  )
        {
            dt.Rows[i]["Check_Content_Name"] = Tools.Decrypt(dt.Rows[i]["Check_Content_Name"].ToString());
            //TreeListNode tempNode = treeList1.AppendNode(new object[] { dt.Rows[i]["Check_Content_Name"].ToString() }, treenode);
            TreeListNode tempNode = treeList1.Invoke(AddTreeNode, new object[] { dt.Rows[i]["Check_Content_Name"] }, treenode) as TreeListNode;
            tempNode.Tag = dt.Rows[i];
        }
    }
}
private TreeListNode TreeEvent(object data, TreeListNode node)
{
    return this.treeList1.AppendNode(data, node);
}
private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
{
    if (e.Node.Level == 3)
    {
        labelControl3.Text = e.Node.ParentNode.ParentNode.GetValue(0).ToString()   "-->"   e.Node.ParentNode.GetValue(0).ToString();
        DataRow obj = e.Node.Tag as DataRow;
        labelControl4.Text = obj["Check_Content_Name"].ToString();
        memoEdit1.Text = Tools.Decrypt(obj["Check_Content_Require"].ToString());
        memoEdit2.Text = Tools.Decrypt(obj["Check_Content_AccArticle_Content"].ToString());
        memoEdit3.Text = Tools.Decrypt(obj["Check_Content_PunishArticle_Content"].ToString());
    }
}

转载于:https://www.cnblogs.com/Hsppl/archive/2012/07/18/2597623.html

相关文章:

  • open cv模板匹配
  • 京东为什么要加班?算是爆料吗?
  • open cv轮廓发现
  • open cv凸包
  • open cv轮廓周围绘制圆形和矩形
  • open cv图形矩
  • Python标准库的学习准备
  • open cv点多边形测试
  • 将redhat的yum换成centos的yum
  • open cv基于距离变换与分水岭的图像分割
  • poj 1661 Help Jimmy (动态规划)
  • 呕心沥血!open cv4.1.2添加contrib4.1.2扩展模块
  • java基础----垃圾回收器如何工作
  • open cvSURF特征检测
  • php条件判断
  • [NodeJS] 关于Buffer
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • android 一些 utils
  • download使用浅析
  • Fabric架构演变之路
  • gops —— Go 程序诊断分析工具
  • Javascripit类型转换比较那点事儿,双等号(==)
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • k8s如何管理Pod
  • linux学习笔记
  • Making An Indicator With Pure CSS
  • PHP的Ev教程三(Periodic watcher)
  • Redis 懒删除(lazy free)简史
  • SpringCloud集成分布式事务LCN (一)
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 闭包--闭包作用之保存(一)
  • 测试如何在敏捷团队中工作?
  • 好的网址,关于.net 4.0 ,vs 2010
  • 力扣(LeetCode)965
  • 容器服务kubernetes弹性伸缩高级用法
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 使用 QuickBI 搭建酷炫可视化分析
  • 世界上最简单的无等待算法(getAndIncrement)
  • 我感觉这是史上最牛的防sql注入方法类
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 系统认识JavaScript正则表达式
  • 一道面试题引发的“血案”
  • 移动端唤起键盘时取消position:fixed定位
  • 06-01 点餐小程序前台界面搭建
  • #laravel 通过手动安装依赖PHPExcel#
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (2)MFC+openGL单文档框架glFrame
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (分布式缓存)Redis哨兵
  • (接口封装)
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (四)JPA - JQPL 实现增删改查
  • (一)appium-desktop定位元素原理
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转载)(官方)UE4--图像编程----着色器开发