• [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());
        }
    }
  • 相关阅读:
    python自动生成bean类
    CVPR2021 | SETR: 使用 Transformer 从序列到序列的角度重新思考语义分割
    经典论文系列 | 缩小Anchor-based和Anchor-free检测之间差距的方法:自适应训练样本选择
    单阶段实例分割综述
    CVPR2021提出的一些新数据集汇总
    使用 PyTorch Lightning 将深度学习管道速度提高 10 倍
    C#中使用ref和out传参的方法及区别
    读书笔记《重构 改善既有代码的设计》(第2版本)
    《大话设计模式》等读后感
    OOP、封装、继承、多态,真的懂了吗?
  • 原文地址:https://www.cnblogs.com/Hsppl/p/2597623.html
Copyright © 2020-2023  润新知