首页 > 解决方案 > 加载图像会使列表框和文本框闪烁一次

问题描述

在 Access 2016 中,我有一个带有列表框的表单和一个图像名为imgFrame.

在列表框中单击文件名时,将显示图像。列表框Click事件的代码是:imgFrame.Picture = "c:\path\filename.jpg"

每当此行运行时,图像会加载一次,但图像控件(以及表单上的任何文本框)会加载眨一次。(命令按钮不闪烁。)


截图(慢动作)

图像

我尝试使用 Application.Echo 填充,如下所示:

Sub showImg_pic(fName)
    Application.Echo False
    imgFrame.Picture = fName
    DoEvents
    Application.Echo True
End Sub

并以imgFrame.Visible相同的方式进行实验,但没有发现任何区别。

标签: vbadatabaseimagems-accesscontrols

解决方案


在将 ControlSource 属性添加到 Image 控件之前,Access 2003 需要代码设置 Picture 属性。

我从未使用过图片属性。我使用 ControlSource 属性在 Image 控件中动态加载图像。它可以引用包含图像文件的附件类型字段,但嵌入文件可以大大增加数据库大小,更快地达到 2GB 访问文件大小限制。因此,也可以引用具有外部位置的完整图像路径或部分路径的文本字段并使用表达式来构造完整路径。没有 VBA 代码。没有眨眼。

="C:\your folder path\" & [listbox name]

使用任何字段来构造图像文件名:
="C:\your folder path\" & [EmployeeID] & ".jpg"

如果图像位于数据库旁边的文件夹中:
=CurrentProject.Path & "\Images\" & [listbox name]

如果图像位于中央服务器位置,请使用 UNC 路径:
="\\servername\path\Images\" & [listbox name]


推荐阅读