加载图像会使列表框和文本框闪烁一次

Loading an image makes listbox & textboxes blink once

在 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 进行了实验,但没有发现任何差异。

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

我从未使用过图片属性。我使用 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]