0

我正在尝试创建一个用户输入表单,它既捕获用户输入又显示状态更新消息。我想到的最巧妙的方法是让我的用户输入模式表单显示在无模式表单上。用户输入他们的信息并单击“确定”后,模态表单中的信息被复制到非模态表单,模态表单关闭,状态更新被推送到非模态表单,因为在处理过程中发生了变化: 模态形式优于无模态形式

希望,由于位置上有很多混乱,它看起来会相对无缝。我的挑战是摆脱模态表单上的框架。我做了很多搜索,似乎涉及从基础库中完全重绘表单 - 真的没有更简单的方法吗?

4

1 回答 1

0

我不会使用第二种形式,而只是在您的表格顶部放置一个简单的框架。当您想显示“模态表单”时,只需将框架的可见性设置为 True,当您想隐藏它时,将其设置为 False - 所有控件(在您的情况下,输入字段以及“确定”和“取消”按钮) 放置在框架上的内容会自动显示或隐藏。

如果您在“模态表单”框架之外有您不想在当时处于活动状态的控件,请将它们设置为enabled = False. 您可以在表单中使用简单的例程来处理此问题。

在此示例中,我FrameModal在表单顶部绘制了一个框架。请注意,此框架可以放置在其他控件之上。

Option Explicit

Private Sub UserForm_Activate()
    showHideModalFrame False
End Sub

Private Sub buttonShowModal_Click()
    ' Show the "modal" dialog
    showHideModalFrame True
End Sub

Private Sub buttonOK_Click()
    ' Do your stuff here...
    Me.tbUpdates = Me.tbUpdates & vbCrLf & Me.tbInput
    ' Hide the "modal" dialog"
    showHideModalFrame False
End Sub

Private Sub showHideModalFrame(show As Boolean)
    Me.FrameModal.Visible = show
    Me.buttonShowModal.Enabled = Not show
End Sub

在此处输入图像描述

开始表格

在此处输入图像描述

点击显示按钮:

在此处输入图像描述

于 2021-10-04T14:28:09.233 回答