一个有趣的VB问题,不知高手能否回答??是Bug吗?
并不是非要这么做,只是不明白为什么?
窗体放了一个MSFlexGrid1和Text1
MSFlexGrid1最小行高400,Text1的visble属性Flase
问题:
事件:鼠标点击MSFlexGrid1的单元格,
三种操作:1.设断点于Private Sub MSFlexGrid1_EnterCell和
Private Sub Text1_LostFocus()
2.只设断点Private Sub Text1_LostFocus()
3.不设任何断点
三种操作方式Text1的出现情况不同,
1.Private Sub Text1_LostFocus()根本不执行,Text1一直显示
2,3. Private Sub Text1_LostFocus()执行,Text1有时显示
尝试发现去掉
If Me.Text1.Visible And Me.Text1.Enabled Then
Me.Text1.SetFocus
End If
则三种方式一样
关键问题:为什么Private Sub MSFlexGrid1_EnterCell,设断点与不设断点完全不同???
代码如下:
Private Sub Form_Load()
Me.MSFlexGrid1.Cols = 5
Dim i As Integer
For i = 0 To 4
Me.MSFlexGrid1.ColWidth(i) = 2000
Next
For i = 1 To 10
Me.MSFlexGrid1.AddItem ""
Me.MSFlexGrid1.TextMatrix(i, 0) = "aaa"
Me.MSFlexGrid1.TextMatrix(i, 1) = "bbb"
Me.MSFlexGrid1.TextMatrix(i, 2) = "cc"
Me.MSFlexGrid1.TextMatrix(i, 3) = "dd"
Me.MSFlexGrid1.TextMatrix(i, 4) = "fff"
Next
End Sub
Private Sub MSFlexGrid1_EnterCell()
Me.Text1.Visible = True
Me.Text1.Left = Me.MSFlexGrid1.Left + Me.MSFlexGrid1.ColPos(Me.MSFlexGrid1.ColSel) + 50
Me.Text1.Top = Me.MSFlexGrid1.Top + Me.MSFlexGrid1.RowPos(Me.MSFlexGrid1.RowSel) + 50
Me.Text1.Width = Me.MSFlexGrid1.ColWidth(Me.MSFlexGrid1.ColSel)
Me.Text1.Height = Me.MSFlexGrid1.RowHeight(Me.MSFlexGrid1.RowSel)
Me.Text1.Text = Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.RowSel, Me.MSFlexGrid1.ColSel)
CurrRow = Me.MSFlexGrid1.RowSel
CurrCol = Me.MSFlexGrid1.ColSel
If Me.Text1.Visible And Me.Text1.Enabled Then
Me.Text1.SetFocus
End If
End Sub
Private Sub Text1_LostFocus()
Text1.Visible = False
End Sub