怎么在这段代码运行效果是这样的啊?能帮我改改吗?

zhangliangxinyue 2010-08-27 06:11:07
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吗?????
怎么修改才能达到这个效果啊???????
急急急啊????????
...全文
40 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangliangxinyue 2010-08-28
  • 打赏
  • 举报
回复
谢谢各位了!!
希望各位多多进来指点指点啊!!!!!
呵呵!!!
luhao0725 2010-08-27
  • 打赏
  • 举报
回复
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);
}
johndii 2010-08-27
  • 打赏
  • 举报
回复
“p.Tag = i.ToString();”

。。。 路过。
ZengHD 2010-08-27
  • 打赏
  • 举报
回复

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);
}

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧