Layout 事件和 OldLeft、OldTop、OldHeight、OldWidth 属性示例

下例在 Layout 事件内部使用 OldLeft、OldTop、OldHeight 和 OldWidth 属性,使控件保持当前的位置和大小。用户单击标签为“Move ComboBox”的命令按钮可移动控件,然后出现一个响应信息框。还可以单击标签为“Reset ComboBox”的命令按钮,为另一个副本将控件复位。

窗体包含:

  • 名为 CommandButton1 和 CommandButton2 的两个命令按钮控件。
  • 名为 ComboBox1 的组合框。
Dim Initialize
Dim ComboLeft, ComboTop, ComboWidth, ComboHeight 

Sub UserForm_Initialize()
    Initialize = 0
    UserForm_CommandButton1.Caption = "Move ComboBox"
    UserForm_CommandButton2.Caption = "Reset ComboBox"
    
    '复位组合框的信息
    ComboLeft = UserForm_ComboBox1.Left
    ComboTop = UserForm_ComboBox1.Top
    ComboWidth = UserForm_ComboBox1.Width
    ComboHeight = UserForm_ComboBox1.Height
End Sub

Sub UserForm_CommandButton1_Click()
    UserForm_ComboBox1.Move 0, 0, , , True
End Sub

Sub UserForm_Layout()
    Dim MyControl
    Dim MsgBoxResult
    '初始 layout 事件时不输出 MsgBox。
    If Initialize = 0 Then    
        Initialize = 1
        Exit Sub
    End If
    
    MsgBoxResult = MsgBox("In Layout event - Continue move?", vbYesNo)
    If MsgBoxResult = vbNo Then
        UserForm_ComboBox1.Move UserForm_ComboBox1.OldLeft,UserForm_ComboBox1.OldTop, UserForm_ComboBox1.OldWidth,UserForm_ComboBox1.OldHeight
    End If
End Sub

Sub UserForm_CommandButton2_Click()
    UserForm_ComboBox1.Move ComboLeft, ComboTop, ComboWidth, ComboHeight
End Sub

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38