看看下面的代码
if (mainpanel.Controls.Count>0)
{
for(int ii=0;ii<mainpanel.Controls.Count;ii++)
{
curImage=(Bitmap)mypb[ii].Image;
g.DrawImage(curImage,new Rectangle(mypb[ii].Left,mypb[ii].Top,mypb[ii].Width,mypb[ii].Height));
}
}
当Controls.Count>2时,为什么只执行一次就不执行g.DrawImage(curImage,new Rectangle(mypb[ii].Left,mypb[ii].Top,mypb[ii].Width,mypb[ii].Height));该语句了,为什么?
系统提示没有初始化实列,为什么第一次不提示,
分不够再加,在线等......
if (mainpanel.Controls.Count>0)
{
for(int ii=0;ii<mainpanel.Controls.Count;ii++)
{
curImage=(Bitmap)mypb[ii].Image;
g.DrawImage(curImage,new Rectangle(mypb[ii].Left,mypb[ii].Top,mypb[ii].Width,mypb[ii].Height));
}
}
当Controls.Count>2时,为什么只执行一次就不执行g.DrawImage(curImage,new Rectangle(mypb[ii].Left,mypb[ii].Top,mypb[ii].Width,mypb[ii].Height));该语句了,为什么?
系统提示没有初始化实列,为什么第一次不提示,
分不够再加,在线等......
解决方案 »
- js调用。。。。
- 下载文件后控件的AutoPostBack为不起作用了呢?
- 请问在vs2003中怎么获得winform的DataGrid中当前选定行的数据集的数据?
- 有关打印问题
- 请问用c#如何实现打印的?
- 送分
- Socket 传字符串碰到的棘手问题 大家看看 帮忙解决下 谢谢
- 如何用DES算法读取加密的XML文件
- 求教.NET程序用Themida加壳后脱壳的问题 !谢谢
- c#+SQLSERVER中的数据库登录
- ------------------------函数不能返回数组,咱办呢?---------------
- 未处理的“System.ArgumentNullException”类型的异常出现在 system.windows.forms.dll 中。求救!
确定mypb.Count >= 1?
确定每个控件的Image属性都初始化过么?
mypb.Count >= 1?不知道你是什么意思
PictureBox box = new PictureBox();
box.Image = ????;
mypb.SetValue(box,......);
代码 瞎写的, 只是表示一个意思
理论上是这样的,看看有没有异常。g.DrawImage的函数执行的时候有无异常?
后面的代码都不执行,用try catch处理异常,提示没有实列化,不明白是那个没有实列化,
{
try
{
Graphics g = ev.Graphics;
g.PageUnit = GraphicsUnit.Point;
if (mainpanel.Controls.Count>0)
{ for(int ii=0;ii<mainpanel.Controls.Count;ii++)
{
curImage=(Bitmap)mypb[ii].Image;
mypb[ii].Image=curImage;
g.DrawImage(curImage,new Rectangle(mypb[ii].Left,mypb[ii].Top,mypb[ii].Width,mypb[ii].Height));
}
}
ev.HasMorePages = false;
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString(),"系统提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
你设置断点之后看看是不是这句出错?
g.DrawImage(curImage,new Rectangle(mypb[ii].Left,mypb[ii].Top,mypb[ii].Width,mypb[ii].Height));我个人觉得你的问题是,在定义curImage没有初始化,但是方法中传对象必须初始化,当然你也可以用OUT关键字强制不初始化
如:g.DrawImage(out curImage,new Rectangle(mypb[ii].Left,mypb[ii].Top,mypb[ii].Width,mypb[ii].Height));
该句有错,不知道为什么错了
请说明白点
帮帮忙!急死了
for(int ii=0;ii<mainpanel.Controls.Count;ii++)
{
curImage=(Bitmap)mypb[ii].Image;
mypb[ii].Image=curImage;
g.DrawImage(curImage,new Rectangle(mypb[ii].Left,mypb[ii].Top,mypb[ii].Width,mypb[ii].Height));
}
但ii=1时运行到curImage=(Bitmap)mypb[ii].Image;就出项异常错误?
为什么?为什么第一次不出现异常错误呢?
如果是字符串,要在for之外定义 string myStr="";不知道是不是这个原因,你现在用的这些我没有接触过,帮你顶吧,期待高手解决。
{
if(mypb[ii] != null)
{
Image image= mypb[ii].Image;
if(image != null)
{
curImage=image as Bitmap;
if(curImage != null)
{
g.DrawImage(curImage,new Rectangle(mypb[ii].Left,mypb[ii].Top,mypb[ii].Width,mypb[ii].Height));
}
}
}
}把curImage=(Bitmap)mypb[ii].Image;语句分开写,便于跟踪。
你调试的话应该很容易定位错误的。
我现在也怀疑其他代码有问题,但这样,实在是太麻烦了,郁闷中.......
{
string obj = "mypb[" + ii.ToString + "]";
msg = " 没有初始化实列";
System.Diagnostics.Debug.Assert(mypb[ii] != null,obj + msg); Image image= mypb[ii].Image;
msg = ".Image没有初始化实列";
System.Diagnostics.Debug.Assert(image != null,obj + msg); curImage=image as Bitmap;
msg = ".Image不是Bitmap类型";
System.Diagnostics.Debug.Assert(curImage != null,obj + msg); g.DrawImage(curImage,new Rectangle(mypb[ii].Left,mypb[ii].Top,mypb[ii].Width,mypb[ii].Height));
}换上这个试试。可以确定是哪个值不对了。
楼主你好象不太会调试阿。最好找资料学习一下。
我不怎么会调试啊,反正总是少执行两次,当执行到后两次的时候提示 mypb[4]没有被实列化,怎么会事!
你的mypb好象没有被符过值哦?没有符过值的就不能直接用!它里面存的什么?没有看出来
PictureBox[] mypb=new PictureBox[100];
与mypb[4]没有什么关系的,或者说与mypb[4]代码没有关系,我也没有mypb[4]的代码,总之要少执行一次.
我总感觉你的curImage和mypb的定义有问题,但是又说不好是哪里的问题。帮你顶了!
不知道该怎么解决了,郁闷