/// <summary>
        /// 动态绘制数组,增加按钮
        /// </summary>
        private void CreateArray()
        {
            string name;
            int mapW = int.Parse(imgBox.Width.ToString());//地图宽度
            int mapH = int.Parse(imgBox.Height.ToString());//地图高度
            int ArrayXCount = getArrayCount(mapW, gridW);//数组X纬度
            int ArrayYCount = getArrayCount(mapH, gridH);//数组Y纬度
            
            for (int i = 0; i < ArrayXCount; i++)
            {
                for (int h = 0; h < ArrayYCount; h++)
                {
                    Button myButton = new Button();
                    this.panel1.AutoScroll = true;
                    name = i.ToString() + "|" + h.ToString();//以X和Y取按钮名
                    myButton.Text = "0";
                    myButton.Name = name;
                    myButton.Height = gridH;//设置按钮高
                    myButton.Width = gridW;//设置按钮宽
                    myButton.Location = new Point(gridH * h, gridW * i);
                    myButton.BackColor = Color.Red;
                    myButton.Click += new System.EventHandler(this.btn_Click);//设置单击事件
                    this.panel1.Controls.Add(myButton);//把图片对象加载到面板
                }
            }
            this.panel1.Controls.Add(this.imgBox);//把图片对象加载到面板
            textBox1.Text = "宽:" + this.imgBox.Width.ToString() + "高:" + this.imgBox.Height.ToString();
        }

解决方案 »

  1.   

    有没有人知道?
    动态创建按钮多了就会很慢
    而且panel里放pictureBox
    我移动panel图片会卡
      

  2.   

    可以尝试做成用户组件,主页面内嵌form,不影响其他元素加载!
      

  3.   

    动态创建BUTTON之前调用窗口容器的SuspendLayout ,完成创建后调用ResumeLayout 速度会快很多
      

  4.   

    用了这个还是有点慢,SuspendLayout
    如何用为图代替?
    for (int h = 0; h < ArrayYCount; h++)
                    {
                        Button myButton = new Button();
                        this.panel1.AutoScroll = true;
                        name = i.ToString() + "|" + h.ToString();//以X和Y取按钮名
                        myButton.Text = "0";
                        myButton.Name = name;
                        myButton.Height = gridH;//设置按钮高
                        myButton.Width = gridW;//设置按钮宽
                        myButton.Location = new Point(gridH * h, gridW * i);
                        myButton.BackColor = Color.Red;
                        myButton.Click += new System.EventHandler(this.btn_Click);//设置单击事件
                        this.panel1.Controls.Add(myButton);//把图片对象加载到面板
                    }
      

  5.   

    this.panel1.Controls.Add(myButton);//把图片对象加载到面板
    我发现就是这句
    加上会很卡
    只要加载到面板里就卡
    怎么解决?
      

  6.   

    可以考虑不要用按钮。
    自己写个组件,实现IComponent就可以了
      

  7.   

    soarem520() ( ) 信誉:100    Blog   加为好友  2007-06-26 16:07:27  得分: 0  
     
     
       假设现在是扫雷
    大家扫雷上的按钮是怎么处理的?
    创建多了会很卡
    有什么好的解决办法?
    用位图?有简单例子吗?
      
     
    你可以买本游戏编程的书看看,就知道为什么c++的时候。大家做游戏都是sdk编程了。做连连看总不会放一堆的按钮吧。