现在我有许多图片存放在picturebox中。想通过两个按钮来换页。一个是前一页
另外一个是后一页。有没有好的办法来实现?

解决方案 »

  1.   

    给个思路:将一个picturebox控件放到窗体中,然后选中这个控件,然后点击右键,选择“复制”,再点击右键选择“粘贴”,这样所有picturebox控件的名称都为Picture1,但是Index值不相同。此时你可以设置一个变量用于记录当前显示的图片的Index值(最笨设置一个隐含的text控件用于记录index值总可以吧),这样每次点击“上一图片”或“下一图片”时,只要将当前显示的图片的index加或减1,然后将当前图片设置为不可见Picture1(i).visible=false并将下(上)一图片设置为可见:
    Picture1(i+1).visible=true     

    Picture1(i-1).visible=true
      

  2.   

    假如有五张相片
    picturebox1.picture=loadpicture(app.path+"\1.jpg")
    command1.enable=false  'command1 是前一页按钮
    if command2.value =true then 
    picturebox1.picture=loadpicture(app.path+"\2.jpg")
    command1.enable=true我是个初学者,还是想不出来了,请指教
      

  3.   

    谢谢
    我现在根据 fanqiezhang(番茄) 的思路来写写看,请各位指点:
    我先定义一个picturebox控件数据,假如我有五张图片,
    1,先定义好图片
      for i =1 to 5 
         picturebox1(i).picture=loadpicture(app.path+"\i.jpg")
      next i 
    2,加载第一个图片时,前一页按钮失效
       picturebox1(1).picture=loadpicture(app.path+"\1.jpg")
       command1.enable=false 
    3,点选按钮来实现翻页
      if command2.value=true then 
     pciturebox1(i)= false 
     picturebox1(i++)=true
    问题出来了,如何来知道按钮电击的次数呢?
      

  4.   

    dim PicIndex as integersub command1_click() 'command1 是下一页按钮
    I=I+1
    picturebox1.picture=loadpicture(app.path & "\" & I & ".jpg")
    if I>=5 then command2.enable=false  else command2.enable=true
    end subsub command2_click()
    I=I-1
    picturebox1.picture=loadpicture(app.path & "\" & I & ".jpg")
    if I<=0 then command1.enable=false  else command1.enable=true
    end sub
      

  5.   

    用控件数组Picture1(i)并不是最好的办法。其实只需要一个Picture1就行。将图片用序号排定,比如按其名称编号(或用其它序号方法排定),那么当载入1.jpg后,点下一个,再载入2.jbp,这个名称编号是可以用变量来控制的。这样不是很方便吗?
      

  6.   

    我有1000张图难道要load 1000个控件吗?会内存溢出的
      

  7.   

    我来根据番茄的方法给你补充一下代码:先设置picturebox1(0)的visible为true,其它的图片为false。cmdprevious按钮的enabled=false窗体模块中声明:
    dim i as integer窗口load事件中:
      for i =0 to 4 
         picturebox1(i).picture=loadpicture(app.path & "\" & i+1 & ".jpg")
      next iprivate sub cmdNext_click()
      i=i+1
      picturebox1(i).visible=true
      picturebox1(i-1).visible=false
      cmdpreview.enabled=true
      if i=4 then 
        cmdPrevious.setfocus
        cmdNext.enabled=false
      end if
    end subprivate sub cmdPrevious_click()
      i=i-1
      picturebox1(i).visible=true
      picturebox1(i+1).visible=false
      cmdnext.enabled=true
      if i=0 then 
        cmdnext.setfocus
        cmdprevious.enabled=false
      end if
    end sub未经调试,你自己调试一下,有问题贴出来。
      

  8.   

    在窗体的事件中忘了一句:
      for i =0 to 4 
         picturebox1(i).picture=loadpicture(app.path & "\" & i+1 & ".jpg")
      next i
      i=0   '这句加上。
      

  9.   

    dim n as integer
    const MaxPic as integer = 19 '假定有20张图片:pp0.jpg - pp19.jpg private sub form_load()
    picturebox1.picture=loadpicture(app.path & "\mypicture\pp" & cstr(n) * ".jpg")
    end subprivate sub cmdPre_Click()
    if n = 0 then 
      n = MaxPic
    else
      n = n - 1
    end if
    picturebox1.picture=loadpicture(app.path & "\mypicture\pp" & cstr(n) * ".jpg")
    end subprivate sub cmdNext_Click()
    if n = MaxPic then 
      n = 0
    else
      n = n + 1
    end if
    picturebox1.picture=loadpicture(app.path & "\mypicture\pp" & cstr(n) * ".jpg")
    end sub
      

  10.   

    也可以用这个:
    private picBox() as picture
    然后根报照片数初始化这个数组
    可以按要求一次加载一定数得的图片
    再用
    set picture1.picture = picBox(i)
    来将图片显示出来
    注:picture1是pictureBox控件
       i是数组下标
      

  11.   

    还有一种方法,将图片预存在imagelist中:
    set picturebox1.picture = imagelist1.listimages(n).picture  'n>=1
      

  12.   

    to victorycyz(中海)
     我试过了,但只能打开第一次加载的图片。后面就不能显示了。
    是不是我刚开始在控件数组里设定其他的visible属性为false 的原因
      

  13.   

    既然谈论到这个问题。我想就继续来深入一下:
    我们上面所谈论的就是针对一个目录下的图片的调用。
    如果是这样:
    现在是一个CAI(课件)
    里面有很多课程,而每一个课程又有很多图片构成。现在要通过一个picture1
    和两个按钮command来调用图片。
    课程安排在一个treeview上,当我们点击一个课题时,右侧的picture1打开第一个图片
    然后有下面的 command来打开其余的
    现在一个课程的问题解决
    对于多个课程如何来通过按钮来实现呢?
      

  14.   

    不会吧,我刚测试了一下,没有问题。有一处笔误,另,picturebox采用默认的名称,上面的代码完整地写出来:
    Dim i As IntegerPrivate Sub cmdNext_click()
      i = i + 1
      Picture1(i).Visible = True
      Picture1(i - 1).Visible = False
      cmdPrevious.Enabled = True
      If i = 4 Then
        cmdPrevious.SetFocus
        cmdNext.Enabled = False
      End If
    End SubPrivate Sub cmdPrevious_click()
      i = i - 1
      Picture1(i).Visible = True
      Picture1(i + 1).Visible = False
      cmdNext.Enabled = True
      If i = 0 Then
        cmdNext.SetFocus
        cmdPrevious.Enabled = False
      End If
    End SubPrivate Sub Form_Load()
     for i =0 to 4 
         picture1(i).picture=loadpicture(app.path & "\" & i+1 & ".jpg")
     next i
     i = 0
    End Sub
      

  15.   

    very strange 
    i have the same as your writing.
    why?
    my pictures can't display but the first picture
      

  16.   

    是不是没有刷新窗体啊?加上form1.Refresh试试