我写段代码,你试试 Private Sub EnabTxt(Txt As TextBox, Flag As Boolean, X As Long, Y As Long) With Txt If Flag Then Set .Container = Me .Move Frame1.Left + X, Frame1.Top + Y .ZOrder 0 .SetFocus .Tag = 1 Else Set .Container = Frame1 .Move X, Y .Tag = 0 End If End With End Sub Private Sub Form_Load() Frame1.Enabled = False EnabTxt Text1, False, 300, 300 End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If X > Frame1.Left + 300 And X < Frame1.Left + 300 + Text1.Width And Y > Frame1.Top + 300 And Y < Frame1.Top + 300 + Text1.Height Then EnabTxt Text1, True, 300, 300 Else If Text1.Tag = 1 Then EnabTxt Text1, False, 300, 300 End If End Sub Private Sub Text1_LostFocus() EnabTxt Text1, False, 300, 300 End Sub
freme1.enabled=true
text1.enabled=false
Private Sub EnabTxt(Txt As TextBox, Flag As Boolean, X As Long, Y As Long)
With Txt
If Flag Then
Set .Container = Me
.Move Frame1.Left + X, Frame1.Top + Y
.ZOrder 0
.SetFocus
.Tag = 1
Else
Set .Container = Frame1
.Move X, Y
.Tag = 0
End If
End With
End Sub
Private Sub Form_Load()
Frame1.Enabled = False
EnabTxt Text1, False, 300, 300
End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If X > Frame1.Left + 300 And X < Frame1.Left + 300 + Text1.Width And Y > Frame1.Top + 300 And Y < Frame1.Top + 300 + Text1.Height Then
EnabTxt Text1, True, 300, 300
Else
If Text1.Tag = 1 Then EnabTxt Text1, False, 300, 300
End If
End Sub
Private Sub Text1_LostFocus()
EnabTxt Text1, False, 300, 300
End Sub
第一种方法:
一、加个Frame2,把Frame2放在Frame1的背后。
二、把那个text2放在Frame2上,对应Frame1中放text2的位置。
三、用API函数,把Frame1对应text2的地方“挖掉”,即把text2对应的区域设置为透明。
四、当Frame1.Enabled时,把Frame2放到Frame1的前面,但让Frame2除了Text2外,把其它区域设置为透明。第二种方法:是通过第一种方法想到的。
一、做两个一模一样的Frame,Frame1、Frame2。
二、当Frame1.Enabled时,Frame1.visible=False,Frame2.visible=True。不知道行不行。