VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 800|回复: 5

自制控件为什么不能存图片属性?

[复制链接]

2

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-16 14:20:01 | 显示全部楼层 |阅读模式
自制一个控件,上面放两个image控件image1和image2

用向导自建属性pic0和pic1,分别映射到image1和image2的picture属性,自动生成如下代码,在设计的时候分别制定pic0和pic1的属性(bmp图片),可是一按F5运行图片却消失了,什么都没有,保存后再打开,图片也同样消失,自动生成的代码如下,高手快帮我看看哪里出问题了?

Option Explicit

'注意!不要删除或修改下列被注释的行!
'MappingInfo=Image1,Image1,-1,Picture
Public Property Get Pic0() As Picture
    Set Pic0 = Image1.Picture
End Property

Public Property Set Pic0(ByVal New_Pic0 As Picture)
    Set Image1.Picture = New_Pic0
    PropertyChanged "Pic0"
End Property

'注意!不要删除或修改下列被注释的行!
'MappingInfo=Image2,Image2,-1,Picture
Public Property Get Pic1() As Picture
    Set Pic1 = Image2.Picture
End Property

Public Property Set Pic1(ByVal New_Pic1 As Picture)
    Set Image2.Picture = New_Pic1
    PropertyChanged "Pic1"
End Property

'从存贮器中加载属性值
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

    Set Picture = PropBag.ReadProperty("Pic0", Nothing)
    Set Picture = PropBag.ReadProperty("Pic1", Nothing)
End Sub

'将属性值写到存储器
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

    Call PropBag.WriteProperty("Pic0", Picture, Nothing)
    Call PropBag.WriteProperty("Pic1", Picture, Nothing)
End Sub




回复

使用道具 举报

0

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-1-24 20:00:01 | 显示全部楼层
修改下面代码:
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

    Set Image1.Picture = PropBag.ReadProperty("Pic0", Nothing)
    Set Image2.Picture = PropBag.ReadProperty("Pic1", Nothing)
End Sub

'将属性值写到存储器
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

    Call PropBag.WriteProperty("Pic0", Image1.Picture, Nothing)
    Call PropBag.WriteProperty("Pic1", Image2.Picture, Nothing)
End Sub
回复

使用道具 举报

0

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-1-26 10:09:01 | 显示全部楼层
改写下面代码:

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

    Set Image1.Picture = PropBag.ReadProperty("Pic0", Nothing)
    Set Image2.Picture = PropBag.ReadProperty("Pic1", Nothing)
End Sub

'将属性值写到存储器
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

    Call PropBag.WriteProperty("Pic0", Image1.Picture, Nothing)
    Call PropBag.WriteProperty("Pic1", Image2.Picture, Nothing)
End Sub
回复

使用道具 举报

2

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-2-5 06:00:01 | 显示全部楼层
我都将属性映射到image1和image2了, 为什么不会自动生成正确的代码呢?
回复

使用道具 举报

0

主题

34

帖子

17.00

积分

新手上路

Rank: 1

积分
17.00
发表于 2020-2-7 13:15:01 | 显示全部楼层
Option Explicit

'注意!不要删除或修改下列被注释的行!
'MappingInfo=Image1,Image1,-1,Picture
Public Property Get Pic0() As Picture
Set Pic0 = Image1.Picture
End Property

Public Property Set Pic0(ByVal New_Pic0 As Picture)
Set Image1.Picture = New_Pic0
PropertyChanged "Pic0"
End Property

'注意!不要删除或修改下列被注释的行!
'MappingInfo=Image2,Image2,-1,Picture
Public Property Get Pic1() As Picture
Set Pic1 = Image2.Picture
End Property

Public Property Set Pic1(ByVal New_Pic1 As Picture)
Set Image2.Picture = New_Pic1
PropertyChanged "Pic1"
End Property

'从存贮器中加载属性值
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

Set Picture = PropBag.ReadProperty("Pic0", Nothing)
Set Picture = PropBag.ReadProperty("Pic1", Nothing)
End Sub

'将属性值写到存储器
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

Call PropBag.WriteProperty("Pic0", Pic0, Nothing)
Call PropBag.WriteProperty("Pic1", Pic1, Nothing)
End Sub
回复

使用道具 举报

0

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-2-16 15:45:01 | 显示全部楼层
控件向导只是一个辅助工具,它的确可以省去我们很多编写重复代码的时间,但事实上还有很多不足,很多时候我们需要手工去改写它生成的代码。不要太依赖它。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

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