'复制 和楼上说的一样,但是VSFlexGrid的选择格式必须是下面的才可以使用右键菜单,也就是整行选择 .SelectionMode = flexSelectionListBox 用过类似的代码写到商用去了,但是一直不太放心 - - 自己感觉的缺点: 1.整行选择,整行会随着选择而变色 2.多单元格复制时,必须要用分隔符 3.因为加了菜单,所以有时会覆盖MDI主窗体的菜单'换行 Private Sub VSFlexGrid1_KeyUp(KeyCode As Integer, Shift As Integer) With Me.VSFlexGrid1 If KeyCode = 13 Then .Row = .Row + 1 End If End With End Sub '不要用这个换行,因为焦点移至他处可能会产生bug Private Sub VSFlexGrid1_ValidateEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean) With Me.VSFlexGrid1 .Row = .Row + 1 End With End Sub
'保存的时候别忘了如何考虑回车符,会有瞬间闪烁的现象,不知道那些老大们有没有办法避免的. Private Sub fg_KeyUp(KeyCode As Integer, Shift As Integer) With fg If KeyCode = 13 Then .TextMatrix(.Row, .Col) = .TextMatrix(.Row, .Col) & vbCrLf .EditCell SendKeys "{Right}" End If End With End Sub
谢谢AisaC,按您的代码回车后换了两行呢
直接在vsflexgrid单元格编辑的时候,只要按Shift+Enter也会换行的
楼主所说的这些vsflexgrid都可以实现的
我觉得第一个问题最好的处理就是如下: 先设置VSFLEXGRID的属性中Editable = flexEDKbdMouse在VSFLEXGRID的事件中 Private Sub vsflexgrid_KeyPressEdit(ByVal Row As Long, ByVal Col As Long, KeyAscii As Integer) keyascii=0 End Sub这样处理后,可以复制内容,但不能修改单元格中的信息
'复制
和楼上说的一样,但是VSFlexGrid的选择格式必须是下面的才可以使用右键菜单,也就是整行选择
.SelectionMode = flexSelectionListBox
用过类似的代码写到商用去了,但是一直不太放心 - - 自己感觉的缺点:
1.整行选择,整行会随着选择而变色
2.多单元格复制时,必须要用分隔符
3.因为加了菜单,所以有时会覆盖MDI主窗体的菜单'换行
Private Sub VSFlexGrid1_KeyUp(KeyCode As Integer, Shift As Integer)
With Me.VSFlexGrid1
If KeyCode = 13 Then
.Row = .Row + 1
End If
End With
End Sub
'不要用这个换行,因为焦点移至他处可能会产生bug
Private Sub VSFlexGrid1_ValidateEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean)
With Me.VSFlexGrid1
.Row = .Row + 1
End With
End Sub
我所谓的换行指的不是row,而是单元格内部文字的换行,vsflexgrid按回车后无法让文字换行的。
我现在只能采用点击单元格显示textbox的方式来解决。很奇怪为什么这两个功能datagrid都有,vsflexgrid会没有呢,郁闷
'保存的时候别忘了如何考虑回车符,会有瞬间闪烁的现象,不知道那些老大们有没有办法避免的.
Private Sub fg_KeyUp(KeyCode As Integer, Shift As Integer)
With fg
If KeyCode = 13 Then
.TextMatrix(.Row, .Col) = .TextMatrix(.Row, .Col) & vbCrLf
.EditCell
SendKeys "{Right}"
End If
End With
End Sub
先设置VSFLEXGRID的属性中Editable = flexEDKbdMouse在VSFLEXGRID的事件中
Private Sub vsflexgrid_KeyPressEdit(ByVal Row As Long, ByVal Col As Long, KeyAscii As Integer)
keyascii=0
End Sub这样处理后,可以复制内容,但不能修改单元格中的信息