public Form1()
        {
            InitializeComponent();
        }
        ArrayList list = new ArrayList();
       
        private void Form1_Load(object sender, EventArgs e)
        {
            list.Add(this.panel1);
            list.Add(this.panel2);
            list.Add(this.panel3);
            list.Add(this.panel4);
            list.Add(this.panel5);
            list.Add(this.panel6);
            list.Add(this.panel7);
            list.Add(this.panel8);
            
          
            for (int i = 0; i < 8; i++)
            {
             
                dd = i.ToString();
                Panel p = (Panel)list[i]; 
                p.Paint+=new PaintEventHandler(p_Paint);
         
           
            }
       
        }
        string dd = "";
        private void p_Paint(object sender, PaintEventArgs e)
        {
           
            Panel p = (Panel)sender;
            Graphics g = p.CreateGraphics();
          
            System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
            System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat();
            Font drawFont = new Font(FontFamily.GenericMonospace, 10, FontStyle.Bold);
             g.DrawString(dd, drawFont, drawBrush, 0, 10, drawFormat);
            
            }这段代码运行怎么每个面板上全是7啊
不是每个面板上分别是1234567吗?????
怎么修改才能达到这个效果啊???????
急急急啊????????

解决方案 »

  1.   


            ArrayList list = new ArrayList();        private void Form1_Load(object sender, EventArgs e)
            {
                list.Add(this.panel1);
                list.Add(this.panel2);
                list.Add(this.panel3);
                list.Add(this.panel4);
                list.Add(this.panel5);
                list.Add(this.panel6);
                list.Add(this.panel7);
                list.Add(this.panel8);
                for (int i = 0; i < 8; i++)
                {
                    Panel p = (Panel)list[i];
                    p.Tag = i.ToString();
                    p.Paint += new PaintEventHandler(p_Paint);
                }
            }        private void p_Paint(object sender, PaintEventArgs e)
            {
                Panel p = (Panel)sender;
                Graphics g = p.CreateGraphics();            System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
                System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat();
                Font drawFont = new Font(FontFamily.GenericMonospace, 10, FontStyle.Bold);
                g.DrawString(p.Tag.ToString(), drawFont, drawBrush, 0, 10, drawFormat);
            }
      

  2.   

    for (int i = 0; i < 8; i++)
      {
        
      dd = i.ToString();
      Panel p = (Panel)list[i];  
      p.Paint+=new PaintEventHandler(p_Paint);
        
        
      }
    循环给一个变量赋值当然出来后就是最后一个值了;
    用楼上的方法应该可以,也可以改成下面的方法,我试过了是可以的:ArrayList list = new ArrayList();        private void Form1_Load(object sender, EventArgs e)
            {
                list.Add(this.panel1);
                list.Add(this.panel2);
                list.Add(this.panel3);
                list.Add(this.panel4);
                list.Add(this.panel5);
                list.Add(this.panel6);
                list.Add(this.panel7);
                list.Add(this.panel8);
                for (int i = 0; i < 8; i++)
                {
                    Panel p = (Panel)list[i];
                    p.Paint += new PaintEventHandler(p_Paint);
                }
            }        private void p_Paint(object sender, PaintEventArgs e)
            {
                Panel p = (Panel)sender;
                Graphics g = p.CreateGraphics();            System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
                System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat();
                Font drawFont = new Font(FontFamily.GenericMonospace, 10, FontStyle.Bold);
                g.DrawString(list.IndexOf(sender).ToString(), drawFont, drawBrush, 0, 10, drawFormat);
            }