过程A中在主窗口动态添加PicBoxFace,在过程B中该如何操作?

WithSmile2000 2004-09-04 07:43:36
private void FormMain_Load(object sender, System.EventArgs e)
{
PictureBox[,] PicBoxFace = new PictureBox[99,99];
for(int i=0;i<intTileHNum;i++)
for(int j=0;j<intTileVNum;j++)
PicBoxFace[i,j] = new PictureBox();
PicBoxFace[i,j].ID = "PicBoxFace"+i+"X"+j;
}

private void ProcessIniBMap()
{
//以下是想要操作上个过程动态添加的PicBoxFace[i,j]
//但是通过PicBoxFace[i,j]是不能访问的,该如何实现?通过ID访问?
//有类似FindControl的函数吗?
for(int i=0;i<99;i++)
for(int j=0;j<99;j++)
PicBoxFace[i,j].Image=ImageTarrain[0];
}
...全文
75 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
WithSmile2000 2004-09-06
  • 打赏
  • 举报
回复
kissmett(雨岸一帆) ( )
PicBoxFace[i,j].ID = "PicBoxFace"+i+"X"+j;这一句能编译的过?
----------------------------------------------
不行的,我本来以为也像ASP.NET中的findcontrol一样可以通过ID访问,这样看来是不行的。


noahart(八卦小子) ( )
---------------------------------------------
假如我想有个只对特定序号的几个PicBoxFace进行图片显示,这样的方法不是十分繁复?C#中就不提供通过ID访问实例的函数?
noahart 2004-09-05
  • 打赏
  • 举报
回复
ID是什么啊?
可以去掉 PicBoxFace[i,j].ID = "PicBoxFace"+i+"X"+j;

这样访问:
private void ProcessIniBMap()
{
IEnumerator keys=PicBoxFace.GetEnumerator();
keys.MoveNext();
while(keys.Current!=null)
{
PictureBox pic=(PictureBox)keys.Current;
pic.Image=this.imageList1.Images[0];//图片
keys.MoveNext();
}
//依次为picbox加图片
}
kissmett 2004-09-05
  • 打赏
  • 举报
回复
WithSmile2000 (其实我是一个马甲) :
PictureBox类哪有ID属性啊?
没有ID怎么谈通过ID查找?
PicBoxFace[i,j].ID = "PicBoxFace"+i+"X"+j;这一句能编译的过?
WithSmile2000 2004-09-04
  • 打赏
  • 举报
回复
谢谢楼上的,这样的方法能行,我已经试过拉,但是能通过ID访问吗?有类似中ASP.NET中的FindControl函数吗?
happyno7 2004-09-04
  • 打赏
  • 举报
回复
private void FormMain_Load(object sender, System.EventArgs e)
{
PictureBox[,] PicBoxFace = new PictureBox[99,99];
.....
}
-------------------------------------
你的PicBoxFace 是FormMain_Load函数的局部变量,离开了FormMain_Load函数就不存在了。。。其它函数当然不能访问了。

try:

PictureBox[,] PicBoxFace = new PictureBox[99,99];
private void FormMain_Load(object sender, System.EventArgs e)
{
for(int i=0;i<intTileHNum;i++)
for(int j=0;j<intTileVNum;j++)
PicBoxFace[i,j] = new PictureBox();
PicBoxFace[i,j].ID = "PicBoxFace"+i+"X"+j;
}
.........

WithSmile2000 2004-09-04
  • 打赏
  • 举报
回复
在 FormMain_Load()中添加一个Panel控件,假设为Panel1
并添加一个ArrayList picList = new ArrayList()存放这些PictureBox
---------------------------------------------------------------------
但是,picList还是只存在于FormMain_Load()中,ProcessIniBMap中还是不能直接引用啊。
hxhbluestar 2004-09-04
  • 打赏
  • 举报
回复
更正一下上面的错误
int k=0;
for(int i=0;i<99;i++)
{
for(int j=0;j<99;j++)
{
k++;
PictureBox findPic = (PictureBox)this.picList[k];
findPic.Image = ImageTarrain[0];
}
}
不能用 i*j来计算索引
hxhbluestar 2004-09-04
  • 打赏
  • 举报
回复
不是通过ID访问,而是通过索引访问

在 FormMain_Load()中添加一个Panel控件,假设为Panel1
并添加一个ArrayList picList = new ArrayList()存放这些PictureBox


PicBoxFace[i,j] = new PictureBox();
this.Panel1.Controls.Add(PicBoxFace[i,j]);
this.picList.Add(PicBoxFace[i,j]);

在 ProcessIniBMap()中
for(int i=0;i<99;i++)
{
for(int j=0;j<99;j++)
{
PictureBox findPic = (PictureBox)this.picList[i*j];
findPic.Image = ImageTarrain[0];
}
}


110,500

社区成员

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

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

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