c#中代碼中多線程動態創建progressbar的實例,概念很重要可擴展很多類似概念

以下是代碼中創建progressbar的實例

 int count = 0;
        private void button4_Click(object sender, EventArgs e)
        {
            Thread th = new Thread(() => {
                Form form = new Form();
                form.Name="myForm";
                form.Width = 200;
                form.Height = 20;
                form.ControlBox = false;
                //form.ShowInTaskbar = false;
                form.StartPosition = FormStartPosition.CenterScreen;
                ProgressBar pb = new ProgressBar();
                pb.Dock = DockStyle.Fill;
                pb.Maximum = 100;
                pb.Minimum = 0;
                pb.Value = count;
                pb.BringToFront();
                pb.Visible = true;
                pb.Parent = form;
                form.ShowDialog();
            
            });
            th.Start();

            for (int i = 0; i < 1000;i++ )
            {
                Thread.Sleep(5);
                count = Convert.ToInt32(i * 1.0 / 1000 * (100 - 0) + 0);
              Control control=  FindForm("myForm");
              if (control!=null&&control.Name == "myForm" && control.IsHandleCreated)
                {
                    control.Invoke(new Action(() => {
                        ProgressBar pb = control.Controls[0] as ProgressBar;
                        pb.Value = count;
                    }));
                   
                }
            }
            th.Abort();
        }
        public Form FindForm(string name)
        {

            foreach (Form f in Application.OpenForms)
            {

                if (f.Name == name) return f;

            }

            return null;

        }
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章