zoukankan      html  css  js  c++  java
  • C#运动控制05实时报警及显示方案

    以下是学习笔记:

    思路:

    正常时候显示Label标签,有报警时候显示滚动条控件。

    Label标签和滚动条标签大小一样,重叠在一起,通过是否报警,来显示或隐藏控件,达到切换正常和报警的状态。

    1,安装NuGet滚动条控件:SeeSharpToolsJY.GUI

     2,控件布局

    【2.1】

    【2.2】

    ScrollingText的Visalbe设置为False;

    【2.3】

     3,代码实现

    【3.1】

            //【报警显示步骤1】在主窗体添加报警委托
            /// <summary>
            /// 参数1:报警信息。参数2:这个报警是触发还是消除
            /// </summary>
            private Action<string, bool> AddAlarm;
    

      

    【3.2】

            //【报警显示步骤2】在监控窗体添加报警委托的原型
            public void AddAlarm(string info, bool isAck)
            {
                if (isAck)
                {
                    //如果
                    if (!AlarmInfoList.Contains(info))
                    {
                        AlarmInfoList.Add(info);
                    }
                }
                else
                {
                    if (AlarmInfoList.Contains(info))
                    {
                        AlarmInfoList.Remove(info);
                    }
                }
                //刷新界面
                RefreshAlarm();
            }
    
            /// <summary>
            /// 刷新报警控件界面显示
            /// </summary>
            private void RefreshAlarm()
            {
                this.Invoke(new Action(() =>
                {
                    if (AlarmInfoList.Count == 0)
                    {
                        this.led_state.Value = true;
                        this.lbl_info.Visible = true;
                        this.lbl_scrollInfo.Visible = false;
                        this.lbl_info.Text = "系统运行正常";
                    }
                    else if (AlarmInfoList.Count == 1)
                    {
                        this.led_state.Value = false;
                        this.lbl_info.Visible = true;
                        this.lbl_scrollInfo.Visible = false;
                        this.lbl_info.Text = AlarmInfoList[0];
                    }
                    else
                    {
                        this.led_state.Value = false;
                        this.lbl_info.Visible = false;
                        this.lbl_scrollInfo.Visible = true;
                        this.lbl_scrollInfo.Text = string.Join(" / ", AlarmInfoList).Trim();
                    }
                }));
    
            }
    
            /// <summary>
            /// 报警信息列表
            /// </summary>
            private List<string> AlarmInfoList=new List<string>();
    

     

    【3.2】

                            frm=new FrmMonitor();
                            //打开监控窗体的时候,主窗体的AddLog委托绑定监控窗体的AddLog方法
                            this.AddLog = ((FrmMonitor) frm).AddLog;
                            //【报警步骤3】打开监控窗体的时候,主窗体的AddAlarm委托绑定监控窗体的AddAlarm方法
                            this.AddAlarm= ((FrmMonitor)frm).AddAlarm;
    

      

    4,测试

            private void button1_Click(object sender, EventArgs e)
            {
                AddAlarm(this.textBox1.Text, this.checkBox1.Checked);
            }
    

      

  • 相关阅读:
    张礼鑫(帮别人名字作诗)
    千年的守望
    感恩
    转载:像成功人士一样释放压力,快乐并高效着
    50个MBA精粹 [推荐]
    赚钱不是人生的全部
    世界上最权威的68句创业名言,哪一句让你获益匪浅
    郝雪涛只爱薛乙静(帮恋人名字作诗)
    心爱的,你为何还不来为我们的爱情赴约
    中国,请还我一个诗的天堂
  • 原文地址:https://www.cnblogs.com/baozi789654/p/15659417.html
Copyright © 2011-2022 走看看