以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  ListView  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=83173)

--  作者:yaojun
--  发布时间:2016/4/2 11:33:00
--  ListView

求助为什么双击图片后打开一个窗口,确没有显示所点击图片的行内容:

RowActivate事件代码:

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")

If lvw.Current IsNot Nothing Then
  
    Dim vr As WinForm.ListViewRow = lvw.Current

    Forms("商品图片").open

End If

 

窗口商品中心AfterLoad代码:

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() \'暂停绘制
lvw.Rows.Clear() \'清除原来的行
lvw.Images.Clear() \'清除原来的图片
lvw.View = ViewMode.Tile \'显示模式为平铺
lvw.Images.LargeSize = New Size(80,80) \'定义大图标尺寸
lvw.TitleSize = New Size(220,100)  \'设置平铺区域的大小
Dim cls() As String = {"系列","二级编码"} \'定义列名
For i As Integer = 0 To  cls.Length - 1  \'增加列
    Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
    c.Name = cls(i) \'指定列名
Next
For Each dr As DataRow In DataTables("商品中心").DataRows \'从数据表中提取数据
    Dim Key As String = dr("产品图片") \'获取此员工的照片文件
    lvw.Images.AddLargeImage(Key, Key) \'添加照片,直接用文件名作为图片键值
    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
    vr.ToolTipText = dr("审批")  \'设置此行的动态提示
    vr.ImageKey = Key \'设置图片键值
    For Each cl As String In cls \'逐列取值
        vr(cl) = dr(cl)

    Next

Next
lvw.ResumeRedraw() \'恢复绘制

[此贴子已经被作者于2016/4/2 13:00:07编辑过]

--  作者:Hyphen
--  发布时间:2016/4/2 11:38:00
--  
要在Forms("商品图片")的AfterLoads事件中取得ListView的当前行然后赋值
--  作者:Hyphen
--  发布时间:2016/4/2 11:39:00
--  

Forms("商品图片")的AfterLoads事件


Dim lvw As WinForm.ListView = Forms("商品中心").Controls("ListView1")

If lvw.Current IsNot Nothing Then 
   
    Dim vr As WinForm.ListViewRow = lvw.Current

    ‘其它代码

End If


--  作者:yaojun
--  发布时间:2016/4/2 12:08:00
--  

我的ListView1 是在窗口“商品中心”里面的,然后双击图片后打开一个名字叫“商品图片”的窗口,里面只有一个PictureViewer1,是用来查看“商品中心”窗口里面ListView1 所点击的图片的内容的,请问:

1,

Forms("商品图片")的AfterLoads事件是指“商品图片”窗口里面的AfterLoad事件吗,还是“商品图片”里面的RowActivate事件,我是菜鸟,请指明,谢谢

2,代码是这样的吗:

Dim lvw As WinForm.ListView = Forms("商品中心").Controls("ListView1")

If lvw.Current IsNot Nothing Then 
   
    Dim vr As WinForm.ListViewRow = lvw.Current

   Forms("商品图片").open  ‘其它代码

End If

3,如上代码好像没有解决问题,应该是我理解错误,请老师指导。

非常感谢


--  作者:Hyphen
--  发布时间:2016/4/2 14:42:00
--  
上例子
--  作者:yaojun
--  发布时间:2016/4/2 15:26:00
--  
[upload=table,贸易管理软件.table]viewFile.asp?ID=783
[此贴子已经被作者于2016/4/2 16:42:05编辑过]

--  作者:yaojun
--  发布时间:2016/4/2 15:28:00
--  

要求打开商品中心后,双击右边的图片能够打开窗口商品图片,并能对应相对的行,密码yy090424

[此贴子已经被作者于2016/4/2 15:29:04编辑过]

--  作者:Hyphen
--  发布时间:2016/4/2 16:33:00
--  
商品中心AfterLoad事件

DataTables("商品中心").Load
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() \'暂停绘制
lvw.Rows.Clear() \'清除原来的行
lvw.Images.Clear() \'清除原来的图片
lvw.View = ViewMode.LargeIcon \'显示模式为 大图标
lvw.Images.LargeSize = New Size(180,130) \'定义大图标尺寸
For Each dr As DataRow In DataTables("商品中心").DataRows \'从数据表中提取数据
    Dim Key As String = dr("产品图片") \'获取此员工的照片文件
    lvw.Images.AddLargeImage(Key, Key) \'添加照片,直接用文件名作为图片键值
    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
    vr.Text = dr("二级编码")  \'设置标题
    vr.ImageKey = Key \'设置图片键值
vr.Tag= dr \'将DataRow赋值给ListViewRow的Tag属性,将二者联系起来
Next
lvw.ResumeRedraw() \'恢复绘制

ListView DoubleClick事件

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
If lvw.Current IsNot Nothing Then
    Dim dr As DataRow = lvw.Current.tag
    Dim idx = Tables("商品中心").FindRow(dr)
    If idx >= 0 Then \'如果找到的话
        Tables("商品中心").Position = idx \'定位到找到的行.
    End If
End If

Forms("商品图片").Open

--  作者:yaojun
--  发布时间:2016/4/2 16:42:00
--  

非常感谢,谢谢了