苏州三木软件科技有限公司

 找回密码
 立即注册
搜索
热搜: 活动
查看: 9724|回复: 1

CurrentChanged事件报错

[复制链接]

31

主题

44

帖子

201

积分

中级会员

Rank: 3Rank: 3

积分
201
发表于 2025-1-25 10:07:19 | 显示全部楼层 |阅读模式
Public Sub CurrentChanged(sender As Object,e As  System.EventArgs)
                        Dim tbl As SmGrid=Proj.CurrentSmGrid
                        If tbl Is Nothing Then Return
                        Dim dr As RowData=tbl.CurrentRowData
                        If dr Is Nothing Then Return
                        Dim SmPictureBox1 As SmPictureBox=Proj.OpenedForms("员工档案").ControlDictionary()("SmPictureBox1")
                        Dim img As Image=tbl.CurrentRowData.SQlLoadImage("zp")
                        SmPictureBox1.Image=img
                                                Dim img1 As Image=Image.FromStream(New System.IO.MemoryStream(CType(dr("zp"),Byte())))
                        SmPictureBox1.Image=img1
End Sub
回复

使用道具 举报

104

主题

423

帖子

2779

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2779
QQ
发表于 2025-1-25 10:19:22 | 显示全部楼层
上面的代码存在两个比较典型的错误。
错误一:
表引用错误。表的CurrentChanged事件中引用对应触发事件的表应该使用
Dim tbl As SmGrid=sender
平台内Proj.CurrentSmGrid是指当前被激活的表,你鼠标点击一个表时,Proj.CurrentSmGrid就会指向哪个表,会随时变动,这个变量一般是像系统菜单中针对所有当前表才有效的菜单里面才会使用。具体的表与表菜单里面引用表都需要按特定的方法引用。详细可以参考帮助文档:http://www.sanmugrid.com/help/in ... %94%A8%E8%A1%A8.htm
错误二:窗体引用错误。
Proj.OpenedForms("员工档案")这种引用窗体的方法也存在一定的问题,这种引用方式适合在其他窗体引用“员工档案”窗体时使用。如果在“员工档案”窗体内也使用这种引用的话,就有可能会存在窗体未加载时就引用的情况,而实际情况是,只有窗体加载后才会在Proj.OpenedForms里面找到相应的窗体引用。所以一般情况下,我们在当前窗体内引用当前窗体的话,可以通过SmGrid.Form属性来引用。
http://www.sanmugrid.com/help/in ... %BC%95%E7%94%A8.htm
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|苏州三木软件科技有限公司 ( 苏ICP备2022038390号 )

苏公网安备 32058502010732号

GMT+8, 2025-5-7 00:49 , Processed in 0.074892 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表