0

こんにちは、私はセルに追加PictureBoxesしてTableLayoutPanelいますが、10x10 グリッドの場合は 10 秒ほどかかり、長すぎます。私のコードは次のようになります。改善方法を教えてくださいPictureBoxes。すぐに追加されますか? これが私がそれを行う方法です:

 private void x10ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            tableLayoutPanel1.Controls.Clear();
            tableLayoutPanel1.ColumnStyles.Clear();
            tableLayoutPanel1.RowStyles.Clear();
            tableLayoutPanel1.ColumnCount = 10;
            tableLayoutPanel1.RowCount = 10;
            int sliderval = trackBar1.Value;
            //tableLayoutPanel1.Controls.Add(new PictureBox(),2,1);
            for (int i = 0; i < tableLayoutPanel1.RowCount; i++)
            {
                tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, (100 / tableLayoutPanel1.RowCount)));
                for (int j = 0; j < tableLayoutPanel1.ColumnCount; j++)
                {
                    tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, (100 / tableLayoutPanel1.ColumnCount)));


                    PictureBox picture = new PictureBox
                    {
                        Name = "pictureBox" + i,
                        Size = new Size(49, 35),
                        Visible = true,

                        Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                | System.Windows.Forms.AnchorStyles.Left)
                | System.Windows.Forms.AnchorStyles.Right))),
                        BackColor = colors[random.Next(0, sliderval)],
                        TabIndex = 0,
                        TabStop = false
                    };
                    tableLayoutPanel1.Controls.Add(picture, j, i);
                    picture.Dock = DockStyle.Fill;
                    // picture.Margin = new Thickness(40, 16, 0, 0);
                    // picture.Padding = new Padding(0);         
                    picture.SizeMode = PictureBoxSizeMode.Normal;
                    picture.Margin = new Padding(0);
                }

            }
            AssignClickEvent();
        }
4

1 に答える 1

0

このURLを見てください。あなたのフォームは何度も再描画する必要があり、遅くなる可能性があります。むしろ、絵を一時停止します。すべての変更を行ってから再開します。塗装が少ない。http://www.c-sharpcorner.com/Forums/Thread/52/

于 2013-03-25T19:55:30.610 に答える