第一个问题:昨天刚发现的,结合TextBox MSHFlexGrid 进行设计,其中分别有 TextBox 的KeyDown KeyPress 事件,MSHFlexGrid 的 LeaveCell EnterCell GotFocus 事件
后来又加入 TextBox 的 LostFocus 事件,事件代码如下:
Private Sub TextBox_LostFocus()
TextBox.Visible=False
End Sub结果加入此代码后,当我点击某单元格的时候,没有触发MSHFlexGrid的EnterCell事件,而如果我在EnterCell事件中加MsgBox “123”以后,则该事件就能正常触发了。Why? 在下百思不得其解呀,为何加入Msgbox事件就能触发了呢?第二个问题:同第一个差不多,无TextBox_LostFocus事件,EnterCell事件触发,用Debug.Print 检测代码似乎也执行也正常,但窗体显示不正常。代码如下:
Private Sub MSHFlexGrid_EnterCell()
With MSHFlexGrid
TextBox.Width=.CellWidth
TextBox.Height=.CellHeight
End Sub用Debug.Print检测Width、Height赋值正常,但窗体显示的TextBox总比单元格大一些。但如果将Debug.Print换成MsgBox则显示立即恢复正常,TextBox变得和单元格一样大了。以上两问,在下想破头也不知道问题在哪里,望高手解惑,在下感激不尽!
后来又加入 TextBox 的 LostFocus 事件,事件代码如下:
Private Sub TextBox_LostFocus()
TextBox.Visible=False
End Sub结果加入此代码后,当我点击某单元格的时候,没有触发MSHFlexGrid的EnterCell事件,而如果我在EnterCell事件中加MsgBox “123”以后,则该事件就能正常触发了。Why? 在下百思不得其解呀,为何加入Msgbox事件就能触发了呢?第二个问题:同第一个差不多,无TextBox_LostFocus事件,EnterCell事件触发,用Debug.Print 检测代码似乎也执行也正常,但窗体显示不正常。代码如下:
Private Sub MSHFlexGrid_EnterCell()
With MSHFlexGrid
TextBox.Width=.CellWidth
TextBox.Height=.CellHeight
End Sub用Debug.Print检测Width、Height赋值正常,但窗体显示的TextBox总比单元格大一些。但如果将Debug.Print换成MsgBox则显示立即恢复正常,TextBox变得和单元格一样大了。以上两问,在下想破头也不知道问题在哪里,望高手解惑,在下感激不尽!
2、控件用的单元格大小单位不同,可能和窗体的默认大小单位有关系。
With mshMTRReg
mshText.Top = .Top + .CellTop
mshText.Left = .Left + .CellLeft
mshText.Width = .CellWidth - 20
mshText.Height = .CellHeight - 20
mshText.Text = .Text
mshText.SelStart = 0
mshText.SelLength = Len(mshText.Text)
End WithEnd Sub谢谢了!
TextBox.Visible=False
End Sub
不要把visible=false放到textbox的lostfocus里面,把它放到你的grid leavecell或者grid的lostfocus里面试试看