DataGrid1_KeyPress困扰了N长时间没解决~达人帮忙,高分送上
Private Sub DataGrid1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then '若按回车
Adodc1.Recordset.MoveFirst '解决输入数值按回车数值向后偏移
If DataGrid1.Col < DataGrid1.Columns.Count - 1 Then '若列数小于列总数则通过
DataGrid1.Col = DataGrid1.Col + 1 '光标右移
Else '若到列尾
If DataGrid1.Row < Adodc1.Recordset.RecordCount - 1 Then '若行数小于数据总数则通过
DataGrid1.Row = DataGrid1.Row + 1 '光标移到下行
DataGrid1.Col = 0 '光标到列头
Else '若到行尾
DataGrid1.Row = 0 '光标到第一行
DataGrid1.Col = 0 '光标到第一列
End If
End If
End If
End Sub
问题1: DataGrid1.Columns.Count - 1 可以判断是否到列尾,那怎么判断是否到行尾呢?除了Adodc1.Recordset.RecordCount - 1 还有什么方法能判断是否到行尾
问题2:datagrid表格如下
------------------
序号 名称 公司
------------------
我在序号列输入1按回车,名称列输入2按回车,公司列输入3按回车.
按正常因该如下:
------------------
序号 名称 公司
1 2 3
------------------
但却是:
------------------
序号 名称 公司
1 2
------------------
如果加上Adodc1.Recordset.MoveFirst填入的数值都会正确,但加入后一直按回车光标只在第1行至第2行列头之间游走,我明明有N行的
看别人说:这是因为datagrid1的行号移动后,其值的改变会传送到Ado的记录集中,否则这个变动会保存在缓存中,所以会发现移动列号后将改变传到移动后的列中。记得在移动前先作行号等安全检查?
请问如何解决问题1和问题2,请测试完或解决了此问题的达人帮忙,粘贴复制的就别来了.