并不是非要这么做,只是不明白为什么?
窗体放了一个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 SubPrivate 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 SubPrivate Sub Text1_LostFocus()
Text1.Visible = False
End Sub
窗体放了一个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 SubPrivate 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 SubPrivate Sub Text1_LostFocus()
Text1.Visible = False
End Sub
解决方案 »
- 关于line方法画方框的问题
- 怎样用ADO对象遍历一个数据表的所有字段呢?
- ADO連接ACCESS數據庫時的怪問題?(能解决送300分!!!!)
- 建立WEB两大经典!《VML极道教程》+FlashVml(闪耀之星)3.0中/英文版联合发布!
- 在DataGrid怎么去寻找行和列?比如我现在需要DataGrid中第二行第二列的数据,怎么去确定这个位置?续发!!
- crystal report 和 datareport 该选哪一个?
- 请问哪里有不需要验证的SMTP服务器可用啊?
- 如何从DLL中传出结构型数组?
- 一个简单的问题,急!在线等候
- 为什么要学习VB?为什么不学习C++?现在要学什么?---------------C#
- 帮忙啊,哪位朋友能提供我汽车零部件资料啊./....
- 安装了Oracle客户端sqlplus链接没有问题,vb链接一直有问题,同样的方法在别的机器上就可以。
我写过这样的程序,开始的时候也用TEXT控件,后来就不用了,直接写就是了,在KEYPRESS事件中,配合TEXTMATRIX方法,就可以了
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 SubPrivate Sub MSFlexGrid1_click()
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
SendKeys "{home}+{end}"
End If
End SubPrivate Sub Text1_change()
MSFlexGrid1.Text = Text1.Text
End Sub
也就是说当你在当前单元格里点击的时候。文本框是不会显示的!
因为你没有离开当前单元格是不会引发ENTERCELL事件的!
姑且可以称之为Bug,像这种Bug很多。