zoukankan      html  css  js  c++  java
  • C#中,用户控件UserControl里面用Panl加载UserControl,并实现利用委托互相传值

    用户控件主窗体结构:左侧树形菜单,右侧Panl;

    根据点击的菜单节点,panl里面选择性加载某一个子窗体用户控件,并传值给子窗体;

    反之,在子窗体进行相应的操作之后,传值给主窗体,触发主窗体的刷新。

    首先,主窗体传值给子窗体,只需创建一个子窗体的对象,用对象去访问子窗体的公开属性及方法,可以在子窗体中定义一个参数变量,在主窗体调用时直接传值给子窗体。

    其次,在子窗体触发事件,需要主窗体同步刷新时,就需要利用委托来传递值。

    下面是用委托的具体方法:

    在子窗体中定义一个委托:

    public delegate void SelectEvent1(string Date, string eleId);
    public SelectEvent1 AfterSelectEvent1;//这里可以用event关键字修饰,也可以不用,区别是:在调用时,event事件必须用+=去赋值,不用event,则直接用=即可

    在主窗体中定义一个与此委托一致的方法://参数类型,个数相同

    private void Uc_AfterSelectEvent1(string Date, string EleId)
    {
    DATE = Date;
    ELEID = EleId;
    GetTreeListData(DATE);//刷新树形菜单的方法
    }

    在主窗体调用子窗体时,将此方法赋值给子窗体的委托:

    uc.AfterSelectEvent1 = Uc_AfterSelectEvent1;//uc是子窗体的对象

    在子窗体中,需要触发主窗体同步刷新的事件中添加自定义委托:(传值)

    AfterSelectEvent1(date_DATE.Text, txt_eleId.Text);

    结束,这样就完成了利用委托将子窗体的值传给主窗体。

    提着昨日种种千辛万苦,向明天换一些美满和幸福。
  • 相关阅读:
    show variables like "sql_mode"; set sql_mode=''; set sql_mode='NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES';
    c#单元测试
    React HookApi
    React Navigation验证流程
    React Native 错误笔记
    React Navigation 5.x BottomTab 使用
    React Navigation 5.x 使用
    虹软人脸识别SDK接入Milvus实现海量人脸快速检索
    iOS逆向:越狱手机抹除数据、还原,cydia出错(2021.04.21 完结)
    C#教程1:类型和变量
  • 原文地址:https://www.cnblogs.com/jiuyueBlog/p/9066001.html
Copyright © 2011-2022 走看看