适当刷新帧画面

Properly refresh frame picture

我在用户表单的帮助下创建了一个仪表板。我用框架加载了背景图片。

我想创建一个隐藏右侧菜单的按钮,以便可以看到整个背景图片。但是,当我隐藏菜单时(它们是标签和1个多形式),标签后面留下一个白色方块,所以看不到图片。

我已经尝试了多种方法来解决这个问题,但是 none 目前为止它们都有效。我用它来隐藏菜单:

Label23.Visible = False
Label20.Visible = False
Label22.Visible = False
Label24.Visible = False
Label51.Visible = False
MultiPage2.Visible = False

在这些之后,我尝试重新绘制框架:

Frame1.Repaint

试图重新绘制整个用户表单:

Me.Repaint

已尝试重新加载图片:

Sub LoadSkin()
Dim Path As String
Path = ThisWorkbook.Path & "\Nechytat\Skins\" & Worksheets("Data").Range("R" & Worksheets("Data").Range("B4").Value).Value

        With ZZZDashboard.Frame1
            .Picture = LoadPicture(Path & ".bmp")
            .PictureSizeMode = fmPictureSizeModeStretch
            .Height = ZZZDashboard.Height
            .Width = ZZZDashboard.Width - ZZZDashboard.Frame2.Width
            .Left = ZZZDashboard.Frame2.Width
        End With
    End Sub

尝试了 DoEvents,尝试再次调用 userform_initialize,甚至尝试组合这些方法。

Private Sub CommandButton1_Click()
  Label23.Visible = False
  Label20.Visible = False
  Label22.Visible = False
  Label24.Visible = False
  Label51.Visible = False
  MultiPage2.Visible = False

  Frame1.Picture = LoadPicture("")
  DoEvents
  Frame1.Repaint
  Me.Repaint
  DoEvents
  Call LoadSkin
  Frame1.Repaint
  DoEvents
End Sub
到目前为止,

None 个已成功。这看起来很容易解决,但我就是想不通。

我建议您在一个多页面中创建两个页面。一个只有背景图像,而另一个具有该图像和控件。您可以通过将 multiPage 的值设置为所需的值来控制哪个页面可见。要隐藏多页附带的选项卡,请将其顶部置于表单上的负值。