0

16 種類のトグル ボタンがあります。彼らはストップウォッチを切り替える必要があります。ボタンをオンにするとストップウォッチがスタートし、ボタンをオフにするとストップウォッチがストップしてリセットされます。16 個のボタンがあり、それぞれが個々のストップウォッチを制御する必要がある場合、これは複雑になります。ユーザーはいつでも、それぞれのストップウォッチをオンにするボタンのすべてまたは一部をオンにすることができます。これを達成する方法についての手がかりはありますか?スレッド化を試みていますが、クロススレッド通信に遭遇しないとうまくいかないようです。何か案は?必要に応じてコードを投稿できますが、重要なのはその概念です。

念のため、コードは次のとおりです。

public partial class Main : Form
{
    //declares global varaibles for easy use accross functions
    bool[] btnstat = new bool[16];
    int UnitNumber = 0, LineNumber = 0;
    String IPaddress = "", message = "";
    bool[] X = new bool[17];
    String[] Y = new String[17];
    bool[] Z = new bool[17];
    double[] time = new double[16];
    bool run = false;
    String serial = Generator.GetMotherBoardID();

    public Main()
    {
        InitializeComponent();
    }//end Main()

    private void Main_Load(object sender, EventArgs e)
    {            
        //checks for initial setup
        System.IO.StreamReader file = new System.IO.StreamReader("Welcome.config");
        string x = file.ReadLine();
        file.Close();
        if (!String.Equals(x, "1px7ngme9dny"))
        {
            Welcome M = new Welcome();
            M.ShowDialog();//pauses program until Welcome page has been closed
        }
        //Console.WriteLine("Serieal : " + serial);//For making sure the serial is pulled correctly

        //Resets all buttons to disabled, invisible, and hidden off page.
        Btn1.Enabled = false; Btn1.Visible = false; Btn1.Top = -30;
        btn2.Enabled = false; btn2.Visible = false; btn2.Top = -30;
        btn3.Enabled = false; btn3.Visible = false; btn3.Top = -30;
        btn4.Enabled = false; btn4.Visible = false; btn4.Top = -30;
        btn5.Enabled = false; btn5.Visible = false; btn5.Top = -30;
        btn6.Enabled = false; btn6.Visible = false; btn6.Top = -30;
        btn7.Enabled = false; btn7.Visible = false; btn7.Top = -30;
        btn8.Enabled = false; btn8.Visible = false; btn8.Top = -30;
        btn9.Enabled = false; btn9.Visible = false; btn9.Top = -30;
        btn10.Enabled = false; btn10.Visible = false; btn10.Top = -30;
        btn11.Enabled = false; btn11.Visible = false; btn11.Top = -30;
        btn12.Enabled = false; btn12.Visible = false; btn12.Top = -30;
        btn13.Enabled = false; btn13.Visible = false; btn13.Top = -30;
        btn14.Enabled = false; btn14.Visible = false; btn14.Top = -30;
        btn15.Enabled = false; btn15.Visible = false; btn15.Top = -30;
        btn16.Enabled = false; btn16.Visible = false; btn16.Top = -30;

        FileReader();
        Updater(); //calls updater to update the program with configuration and calculations
    }//end Main_Load
    public void plusplus()
    {
        for (int i = 0; i < 16; i++)
        {
            if (btnstat[i])
                time[i]++;
            else
                time[i] = 0;
        }
        Updater();
    }

    public void FileReader()
    {
        //declaration
        System.IO.StreamReader file2 = new System.IO.StreamReader("ConfigurationSettings.config");

        //loads all saved data into memory
        for (int i = 1; i <= 53; i++)
        {
            if (i == 1)
            {
                if (String.Equals(file2.ReadLine(), "Yes"))
                {
                }
            }
            else if (i == 2)
            {
                String z = file2.ReadLine();
                if (!String.Equals(null, z))
                    CompName.Text = z;
                else
                    CompName.Text = "Company Name";
            }
            else if (i == 3)
            {
                String z = file2.ReadLine();
                if (!String.Equals(null, z))
                    CompLoc.Text = z;
                else
                    CompLoc.Text = "Company Location";
            }
            else if (i == 4)
            {
                String z = file2.ReadLine();
                if (!String.Equals(null, z))
                {
                    LineNum.Text = "Line: " + z; LineNumber = Convert.ToInt32(z);
                }
                else
                    LineNum.Text = "Line Number: ";
            }
            else if (i == 5)
            {
                String z = file2.ReadLine();
                if (!String.Equals(null, z))
                {
                    UnitNum.Text = "Unit: " + z; UnitNumber = Convert.ToInt32(z);
                }
                else
                    UnitNum.Text = "Unit Number: ";
            }
            else if ((i >= 6) && (i <= 21))
                X[i - 6] = Convert.ToBoolean(file2.ReadLine());
            else if ((i >= 22) && (i <= 37))
                Y[i - 22] = file2.ReadLine();
            else if ((i >= 38) && (i <= 53))
                Z[i - 38] = Convert.ToBoolean(file2.ReadLine());
        }
        IPaddress = file2.ReadLine();
        file2.Close();
    }
    public void Updater()//This reloads everything. From status to what buttons are enabled.
    {
        //Sets all buttons again
        int j = 0;
        if (X[0])
        {
            Btn1.Enabled = true; Btn1.Visible = true; Btn1.Top = (80 + j); Btn1.Text = Y[0]; j += 46;
        }
        if (X[1])
        {
            btn2.Enabled = true; btn2.Visible = true; btn2.Top = (80 + j); btn2.Text = Y[1]; j += 46;
        }
        if (X[2])
        {
            btn3.Enabled = true; btn3.Visible = true; btn3.Top = (80 + j); btn3.Text = Y[2]; j += 46;
        }
        if (X[3])
        {
            btn4.Enabled = true; btn4.Visible = true; btn4.Top = (80 + j); btn4.Text = Y[3]; j += 46;
        }
        if (X[4])
        {
            btn5.Enabled = true; btn5.Visible = true; btn5.Top = (80 + j); btn5.Text = Y[4]; j += 46;
        }
        if (X[5])
        {
            btn6.Enabled = true; btn6.Visible = true; btn6.Top = (80 + j); btn6.Text = Y[5]; j += 46;
        }
        if (X[6])
        {
            btn7.Enabled = true; btn7.Visible = true; btn7.Top = (80 + j); btn7.Text = Y[6]; j += 46;
        }
        if (X[7])
        {
            btn8.Enabled = true; btn8.Visible = true; btn8.Top = (80 + j); btn8.Text = Y[7]; j += 46;
        }
        if (X[8])
        {
            btn9.Enabled = true; btn9.Visible = true; btn9.Top = (80 + j); btn9.Text = Y[8]; j += 46;
        }
        if (X[9])
        {
            btn10.Enabled = true; btn10.Visible = true; btn10.Top = (80 + j); btn10.Text = Y[9]; j += 46;
        }
        if (X[10])
        {
            btn11.Enabled = true; btn11.Visible = true; btn11.Top = (80 + j); btn11.Text = Y[10]; j += 46;
        }
        if (X[11])
        {
            btn12.Enabled = true; btn12.Visible = true; btn12.Top = (80 + j); btn12.Text = Y[11]; j += 46;
        }
        if (X[12])
        {
            btn13.Enabled = true; btn13.Visible = true; btn13.Top = (80 + j); btn13.Text = Y[12]; j += 46;
        }
        if (X[13])
        {
            btn14.Enabled = true; btn14.Visible = true; btn14.Top = (80 + j); btn14.Text = Y[13]; j += 46;
        }
        if (X[14])
        {
            btn15.Enabled = true; btn15.Visible = true; btn15.Top = (80 + j); btn15.Text = Y[14]; j += 46;
        }
        if (X[15])
        {
            btn16.Enabled = true; btn16.Visible = true; btn16.Top = (80 + j); btn16.Text = Y[15]; j += 46;
        }
        this.Size = new System.Drawing.Size(175, (120 + j));

        //sets correct 'On if all others are off'
        bool allareoff = true;
        for (int i = 0; i < 16; i++)
        {
            if (btnstat[i] == true && Z[i] == false)
                allareoff = false;
        }
        if (allareoff)
        {
            for (int i = 0; i < 16; i++)
            {
                if (Z[i] == true)
                    btnstat[i] = true;
            }
        }
        else
        {
            for (int i = 0; i < 16; i++)
            {
                if (Z[i] == true)
                    btnstat[i] = false;
            }
        }

        //updates buttons to current status
        if (btnstat[0])
        {
            Btn1.FlatStyle = FlatStyle.Flat; Btn1.Image = ((System.Drawing.Image)(Properties.Resources.Rl)); Btn1.Text = Y[0] + "\r\n" + time[0];
        }
        else
        {
            Btn1.FlatStyle = FlatStyle.Popup; Btn1.Image = ((System.Drawing.Image)(Properties.Resources.Rd));Btn1.Text = Y[0];time[0] = 0;
        }
        if (btnstat[1])
        {
            btn2.FlatStyle = FlatStyle.Flat; btn2.Image = ((System.Drawing.Image)(Properties.Resources.Rl)); btn2.Text = Y[1] + "\r\n" + time[1];
        }
        else
        {
            btn2.FlatStyle = FlatStyle.Popup; btn2.Image = ((System.Drawing.Image)(Properties.Resources.Rd));btn2.Text = Y[1];time[1] = 0;
        }
        if (btnstat[2])
        {
            btn3.FlatStyle = FlatStyle.Flat; btn3.Image = ((System.Drawing.Image)(Properties.Resources.Yl)); btn3.Text = Y[2] + "\r\n" + time[2];
        }
        else
        {
            btn3.FlatStyle = FlatStyle.Popup; btn3.Image = ((System.Drawing.Image)(Properties.Resources.Yd));btn3.Text = Y[2];time[2] = 0;
        }
        if (btnstat[3])
        {
            btn4.FlatStyle = FlatStyle.Flat; btn4.Image = ((System.Drawing.Image)(Properties.Resources.Yl)); btn4.Text = Y[3] + "\r\n" + time[3];
        }
        else
        {
            btn4.FlatStyle = FlatStyle.Popup; btn4.Image = ((System.Drawing.Image)(Properties.Resources.Yd));btn4.Text = Y[3];time[3] = 0;
        }
        if (btnstat[4])
        {
            btn5.FlatStyle = FlatStyle.Flat; btn5.Image = ((System.Drawing.Image)(Properties.Resources.Gl)); btn5.Text = Y[4] + "\r\n" + time[4];
        }
        else
        {
            btn5.FlatStyle = FlatStyle.Popup; btn5.Image = ((System.Drawing.Image)(Properties.Resources.Gd));btn5.Text = Y[4];time[4] = 0;
        }
        if (btnstat[5])
        {
            btn6.FlatStyle = FlatStyle.Flat; btn6.Image = ((System.Drawing.Image)(Properties.Resources.Gl)); btn6.Text = Y[5] + "\r\n" + time[5];
        }
        else
        {
            btn6.FlatStyle = FlatStyle.Popup; btn6.Image = ((System.Drawing.Image)(Properties.Resources.Gd));btn6.Text = Y[5];time[5] = 0;
        }
        if (btnstat[6])
        {
            btn7.FlatStyle = FlatStyle.Flat; btn7.Image = ((System.Drawing.Image)(Properties.Resources.Bl)); btn7.Text = Y[6] + "\r\n" + time[6];
        }
        else
        {
            btn7.FlatStyle = FlatStyle.Popup; btn7.Image = ((System.Drawing.Image)(Properties.Resources.Bd));btn7.Text = Y[6];time[6] = 0;
        }
        if (btnstat[7])
        {
            btn8.FlatStyle = FlatStyle.Flat; btn8.Image = ((System.Drawing.Image)(Properties.Resources.Bl)); btn8.Text = Y[7] + "\r\n" + time[7];
        }
        else
        {
            btn8.FlatStyle = FlatStyle.Popup; btn8.Image = ((System.Drawing.Image)(Properties.Resources.Bd));btn8.Text = Y[7];time[7] = 0;
        }
        if (btnstat[8])
        {
            btn9.FlatStyle = FlatStyle.Flat; btn9.Image = ((System.Drawing.Image)(Properties.Resources.Wl)); btn9.Text = Y[8] + "\r\n" + time[8];
        }
        else
        {
            btn9.FlatStyle = FlatStyle.Popup; btn9.Image = ((System.Drawing.Image)(Properties.Resources.Wd)); btn9.Text = Y[8]; time[8] = 0;
        }
        if (btnstat[9])
        {
            btn10.FlatStyle = FlatStyle.Flat; btn10.Image = ((System.Drawing.Image)(Properties.Resources.Wl)); btn10.Text = Y[9] + "\r\n" + time[9];
        }
        else
        {
            btn10.FlatStyle = FlatStyle.Popup; btn10.Image = ((System.Drawing.Image)(Properties.Resources.Wd)); btn10.Text = Y[9]; time[9] = 0;
        }
        if (btnstat[10])
        {
            btn11.FlatStyle = FlatStyle.Flat; btn11.Image = ((System.Drawing.Image)(Properties.Resources.Wl)); btn11.Text = Y[10] + "\r\n" + time[10];
        }
        else
        {
            btn11.FlatStyle = FlatStyle.Popup; btn11.Image = ((System.Drawing.Image)(Properties.Resources.Wd)); btn11.Text = Y[10]; time[10] = 0;
        }
        if (btnstat[11])
        {
            btn12.FlatStyle = FlatStyle.Flat; btn12.Image = ((System.Drawing.Image)(Properties.Resources.Wl)); btn12.Text = Y[11] + "\r\n" + time[11];
        }
        else
        {
            btn12.FlatStyle = FlatStyle.Popup; btn12.Image = ((System.Drawing.Image)(Properties.Resources.Wd)); btn12.Text = Y[11]; time[11] = 0;
        }
        if (btnstat[12])
        {
            btn13.FlatStyle = FlatStyle.Flat; btn13.Image = ((System.Drawing.Image)(Properties.Resources.Wl)); btn13.Text = Y[12] + "\r\n" + time[12];
        }
        else
        {
            btn13.FlatStyle = FlatStyle.Popup; btn13.Image = ((System.Drawing.Image)(Properties.Resources.Wd)); btn13.Text = Y[12]; time[12] = 0;
        }
        if (btnstat[13])
        {
            btn14.FlatStyle = FlatStyle.Flat; btn14.Image = ((System.Drawing.Image)(Properties.Resources.Wl)); btn14.Text = Y[13] + "\r\n" + time[13];
        }
        else
        {
            btn14.FlatStyle = FlatStyle.Popup; btn14.Image = ((System.Drawing.Image)(Properties.Resources.Wd)); btn14.Text = Y[13]; time[13] = 0;
        }
        if (btnstat[14])
        {
            btn15.FlatStyle = FlatStyle.Flat; btn15.Image = ((System.Drawing.Image)(Properties.Resources.Wl));btn15.Text = Y[14] + "\r\n" + time[14];
        }
        else
        {
            btn15.FlatStyle = FlatStyle.Popup; btn15.Image = ((System.Drawing.Image)(Properties.Resources.Wd)); btn15.Text = Y[14]; time[14] = 0;
        }
        if (btnstat[15])
        {
            btn16.FlatStyle = FlatStyle.Flat; btn16.Image = ((System.Drawing.Image)(Properties.Resources.Wl));btn16.Text = Y[15] + "\r\n" + time[15];
        }
        else
        {
            btn16.FlatStyle = FlatStyle.Popup; btn16.Image = ((System.Drawing.Image)(Properties.Resources.Wl)); btn16.Text = Y[15]; time[15] = 0;
        } 
        //sends all the data;
        String[] intA = new String[16];
        String ln,un = "";
        for (int i = 0; i < 16; i++)
        {
            if (btnstat[i] == true)
                intA[i] = "0";
            else
                intA[i] = "1";
        }
        if (LineNumber < 10)
            ln = "0" + LineNumber;
        else
            ln = Convert.ToString(LineNumber);
        if (UnitNumber < 10)
            un = "0" + UnitNumber;
        else
            un = Convert.ToString(UnitNumber);
        //creates the string to send.
        message ="" + ln + " " + un + " " +intA[7]+intA[6]+intA[5]+intA[4]+intA[3]+intA[2]+intA[1]+intA[0]+" "+intA[15]+intA[14]+intA[13]+intA[12]+intA[11]+intA[10]+intA[9]+intA[8]+" "+serial;
        IPLabel.Text = "IP: " + IPaddress;
    }//end updater

    public void Sender()
    {
        Console.WriteLine(IPaddress + ": " + message);//for referancing
        Send(IPaddress, 8000, message);//sends message
    }

    public void Send(string server, int port, string message)
    {
        try
        {
            // Create a TcpClient.
            TcpClient client = new TcpClient(server, port);

            // Translate
            Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);

            // Get a client stream
            NetworkStream stream = client.GetStream();

            // Send the message
            stream.Write(data, 0, data.Length);

            // Close 
            stream.Close();
            client.Close();
        }
        catch (ArgumentNullException e)
        {
            // trap error
        }
        catch (SocketException e)
        {
            // trap error
        }
    }  //end send
    private void IALogo_Click(object sender, EventArgs e)
    {
        Config config = new Config();
        config.ShowDialog(); // code here STOPS until "config" is closed
        FileReader();
        Updater();
    }
    private void Main_FormClosing(object sender, FormClosingEventArgs e)
    {
        Application.Exit();
    }

    private void toolTip1_Popup(object sender, PopupEventArgs e){}

    private void button1_Click(object sender, EventArgs e){}

    private void CompLoc_Click(object sender, EventArgs e){}

    private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e){}

    private void button5_Click(object sender, EventArgs e)
    {
        btnstat[5] = !btnstat[5];
        var stopwatch = new Stopwatch();
        if(btnstat[4])
        {
        stopwatch.Start();
        time[4] = stopwatch.ElapsedMilliseconds / 1000;
        }
        else
        {
            stopwatch.Stop();
            time[4] = 0;
        }
        Updater();
        Sender();
    }

    private void Btn1_Click(object sender, EventArgs e)
    {
        btnstat[0] = !btnstat[0];
        Updater();
        Sender();
    }

    private void btn2_Click(object sender, EventArgs e)
    {
        btnstat[1] = !btnstat[1];
        Updater();
        Sender();
    }

    private void btn3_Click(object sender, EventArgs e)
    {
        btnstat[2] = !btnstat[2];
        Updater();
        Sender();
    }

    private void btn4_Click(object sender, EventArgs e)
    {
        btnstat[3] = !btnstat[3];
        Updater();
        Sender();
    }

    private void btn5_Click(object sender, EventArgs e)
    {
        btnstat[4] = !btnstat[4];
        Updater();
        Sender();
    }

    private void btn7_Click(object sender, EventArgs e)
    {
        btnstat[6] = !btnstat[6];
        Updater();
        Sender();
    }

    private void btn8_Click(object sender, EventArgs e)
    {
        btnstat[7] = !btnstat[7];
        Updater();
        Sender();
    }

    private void btn9_Click(object sender, EventArgs e)
    {
        btnstat[8] = !btnstat[8];
        Updater();
        Sender();
    }

    private void btn10_Click(object sender, EventArgs e)
    {
        btnstat[9] = !btnstat[9];
        Updater();
        Sender();
    }

    private void btn11_Click(object sender, EventArgs e)
    {
        btnstat[10] = !btnstat[10];
        Updater();
        Sender();
    }

    private void btn12_Click(object sender, EventArgs e)
    {
        btnstat[11] = !btnstat[11];
        Updater();
        Sender();
    }

    private void btn13_Click(object sender, EventArgs e)
    {
        btnstat[12] = !btnstat[12];
        Updater();
        Sender();
    }

    private void btn14_Click(object sender, EventArgs e)
    {
        btnstat[13] = !btnstat[13];
        Updater();
        Sender();
    }

    private void btn15_Click(object sender, EventArgs e)
    {
        btnstat[14] = !btnstat[14];
        Updater();
        Sender();
    }

    private void btn16_Click(object sender, EventArgs e)
    {
        btnstat[15] = !btnstat[15];
        Updater();
        Sender();
    }

助けてくれてありがとう!

4

0 に答える 0