• C#运动控制指示灯闪烁和系统复位(两个子窗体交互:一个子窗体按钮控制另外一个子窗体的方法)


    以下是学习笔记

    思路:

    定时器 System.Timer.Timer

    过程状态 ProcessState 1 存料  -1 取料 0正常

    要实现的功能: 

    系统复位:两个子窗体之间交互:【手动窗体】(子窗体)的复位按钮来复位【监控窗体】(子窗体)的状态

    两种方法:

    【1】方法1: 双重委托,通过一个媒介(主窗体)把两个子窗体关联起来 

    【2】方法2:静态的委托对象

    方法1:双重委托,通过一个媒介(主窗体)把两个子窗体关联起来 

    【1.1】,执行者中要有一个执行的方法:监控窗体(子窗体):新建一个系统复位的方法

            /// <summary>
            /// 监控窗体中:系统复位的方法
            /// </summary>
            public void SystemReset()
            {
                //复位操作
                AlarmInfoList = new List<string>();
                RefreshAlarm();
            }
    

    【1.2】,主窗体:创建一个为委托和方法

            //主窗体:创建一系统复位的委托
            private Action SystemReset;
    

     

            /// <summary>
            /// 主窗体中:系统复位的方法
            /// </summary>
            private void SysReset()
            {
                //执行主窗体中的SystemReset委托
                this.SystemReset?.Invoke();
            }
    

      

    【1.3】,手动窗体(子窗体):创建一个为委托和方法

           //手动窗体:创建一个系统复位委托对象
            public Action SystemReset;
    

      

            /// <summary>
            /// 手动窗体的复位按钮
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btn_reset_Click(object sender, EventArgs e)
            {
                //调用手动窗体的SystemReset委托
                this.SystemReset?.Invoke();
            }
    

     

    【1.4】,手动窗体的复位按钮--》调用手动窗体的复位委托--》调用主窗体的复位方法--》调用主窗体的复位委托--》监控窗体的复位方法

    方法2:静态的委托对象

    【2.1】,执行者中要有一个执行的方法:监控窗体(子窗体):新建一个系统复位的方法

     

            /// <summary>
            /// 监控窗体中:系统复位的方法
            /// </summary>
            public void SystemReset()
            {
                //复位操作
                AlarmInfoList = new List<string>();
                RefreshAlarm();
            }
    

      

    【2.2】在Program中,创建全局变量,静态的复位委托

     【2.3】主窗体中,打开监控窗体的时候,全局变量静态委托绑定监控窗体的SystemReset方法

    方法2的应用案例:

    A窗体调用B窗体的方法

    【1】在全局变量GlobalVariable中添加1个静态委托

            /// <summary>
            /// 设置监控窗体的IO
            /// </summary>
            public static Action<string> SetIOAction;
    

     

    【2】 B窗体

    GlobalVariable.SetIOAction += SetOut;
    

      实际执行的方法

            public void SetOut(string methodName)
            {
                MethodInfo method = GetType().GetMethod(methodName);
                method.Invoke(this, null);
            }
    

      

    【3】A窗体

     GlobalVariable.SetIOAction(methodName);
    

      

     

     

      

  • 相关阅读:
    《算法导论》读书笔记
    【原创】POI操作Excel导入导出工具类ExcelUtil
    10-JMM
    09-字节码执行引擎
    08-类加载机制
    07-前端编译与优化(待补充)
    06-字节码指令
    05-类文件结构
    04-垃圾回收(2)
    03-垃圾回收(1)
  • 原文地址:https://www.cnblogs.com/baozi789654/p/15703033.html
Copyright © 2020-2023  润新知