DeviceControl.cs 4.2 KB
using DeviceLibrary;
using OnlineStore;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TheMachine
{
    public partial class DeviceControl<T1> : UserControl where T1: UserControl, Idevicetab,new()
    {
        public DeviceControl()
        {
            InitializeComponent();
            
        }

        private void Crc_LanguageChangeEvent(object sender, EventArgs e)
        {
            stateView.Columns[1].Text = crc.GetString("Res0198", "模块");
            stateView.Columns[2].Text = crc.GetString("Res0199", "步骤");
            stateView.Columns[3].Text = crc.GetString("Form1_tabc_tabP1_Text", "信息");
        }

        List<T1> hYControls = new List<T1>();
        List<MoveInfo> MoveInfos = new List<MoveInfo>();
        public string DeviceName = "";
        public void Init(string devicegroup,string prefixfilter="") {
            //tabControl1.TabPages.Clear();
            foreach (var dg in RobotManage.DeviceGroup.Values) {
                if (dg.DeviceType != devicegroup)
                    continue;

                if (!string.IsNullOrEmpty(prefixfilter))
                {
                    if (!dg.GroupName.StartsWith(prefixfilter))
                        continue;
                }

                if (string.IsNullOrEmpty(DeviceName))
                    DeviceName = dg.Name;

                MoveInfos.AddRange(MoveInfo.List.FindAll(m => m.Name.StartsWith(dg.GroupName)));
                var hy = new T1();
                hy.Init(dg.GroupName);
                hYControls.Add(hy);
                AddForm(dg.GroupName, dg.GroupName, hy);
            }


            #region 状态信息listview初始化
            stateView.View = View.Details;
            ColumnHeader c1 = new ColumnHeader();
            c1.Text = "";
            c1.Width = 0;
            ColumnHeader c2 = new ColumnHeader();
            c2.Text = crc.GetString("Res0198", "模块");
            c2.Width = 120;
            ColumnHeader c3 = new ColumnHeader();
            c3.Text = crc.GetString("Res0199", "步骤");
            c3.Width = 120;
            ColumnHeader c4 = new ColumnHeader();
            c4.Text = crc.GetString("Form1_tabc_tabP1_Text", "信息");
            c4.Width = 470;

            stateView.Columns.Add(c1);
            stateView.Columns.Add(c2);
            stateView.Columns.Add(c3);
            stateView.Columns.Add(c4);
            #endregion
            timer1.Start();
            crc.LanguageChangeEvent += Crc_LanguageChangeEvent;
        }

        public void AddForm(string id, string text, UserControl form)
        {
            foreach (TabPage tp in tabControl1.TabPages)
            {
                if (tp.Name == id)
                {
                    tp.Text = text;
                    return;
                }
            }

            TabPage lineTabPage = new TabPage(text);
            lineTabPage.Name = id;
            Panel linePan = new Panel();
            linePan.Dock = DockStyle.Fill;
            linePan.AutoScroll = true;
            lineTabPage.Controls.Add(linePan);
            linePan.Controls.Add(form);
            form.Dock = DockStyle.Fill;
            linePan.Anchor = ((AnchorStyles)((AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Left)));
            form.Anchor = ((AnchorStyles)((AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Left)));
            form.Show();
            tabControl1.TabPages.Add(lineTabPage);
        }

        void SetState(List<MoveInfo> moveInfoList)
        {
            if (RobotManage.mainMachine == null)
                return;

            this.SuspendLayout();
            stateView.Items.Clear();
            foreach (MoveInfo moveInfo in moveInfoList)
            {
                ListViewItem lvi = new ListViewItem(new string[] { "", moveInfo.Name, moveInfo.MoveStep.ToString(), moveInfo.GetStateStr() });
                stateView.Items.Add(lvi);
            }
            this.ResumeLayout(true);

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (Visible)
                SetState(MoveInfos);
        }
    }
}