以下是學習筆記:
思路:
正常時候顯示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); }