using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace IntelligentControlForsx.Test
{
    public partial class MainTest : Form
    {
        private bool isAllLoad = false;

        public MainTest()
        {
            InitializeComponent();

            for (int i = 0; i < 5; i++)
            {
                Button bt = new Button();
                bt.Name = "bt";
                bt.Text = "btn" + i;
                bt.Dock = DockStyle.Left;
                plStructure.Controls.Add(bt);

            }

        }

        private void MainTest_Load(object sender, EventArgs e)
        {

        }

        private void MainTest_Shown(object sender, EventArgs e)
        {

        }

        private void ThreadTest()
        {
            ControlAddDelegate del = new ControlAddDelegate(ControlAdd);
            this.plLoad.Invoke(del);

        }

        private void ControlAdd()
        {
            Thread.Sleep(5000);
            for (int i = 0; i < 5; i++)
            {
                Button bt = new Button();
                bt.Name = "bt" + i;
                bt.Text = "btn" + i;
                bt.Dock = DockStyle.Left;
                plLoad.Controls.Add(bt);

            }
            for (int i = 5; i < 10; i++)
            {
                Button bt = new Button();
                bt.Name = "bt" + i;
                bt.Text = "btn" + i;
                bt.Dock = DockStyle.Left;
                plOther.Controls.Add(bt);

            }
            plLoad.Hide();
            plOther.Hide();
            isAllLoad = true;
            Console.WriteLine("线程加载完毕====================================");

        }

        public delegate void ControlAddDelegate();

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (isAllLoad == false)
            {
                Console.WriteLine("定时器执行(未加载完毕)");
                Thread t = new Thread(ThreadTest);
                t.Start();
                Console.WriteLine("form加载完毕====================================");
            }
            else
            {
                Console.WriteLine("定时器执行(已经加载完毕)");
                timer1.Enabled = false;
            }

        }

        private void btnShow1_Click(object sender, EventArgs e)
        {
            plStructure.Show();
            plLoad.Hide();
            plOther.Hide();
        }

        private void btnShow2_Click(object sender, EventArgs e)
        {
            plStructure.Hide();
            plLoad.Show();
            plOther.Hide();
        }

        private void btnShow3_Click(object sender, EventArgs e)
        {
            plStructure.Hide();
            plLoad.Hide();
            plOther.Show();
        }

        private void btnGetAllControl_Click(object sender, EventArgs e)
        {
            foreach (Control ctrl in this.plStructure.Controls)
            {
                Console.WriteLine(ctrl.Name);
            }
        }
    }
}