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);
        }

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM