VB MSFlexGrid控件使用问题

本文档介绍了MSFlexGrid控件的优化方法,包括提高显示效率的技巧、解决按键响应问题的方案等内容。通过调整selectionmode、backcolorsel等属性实现自动选中指定行;对比.TextMatrix与.row:.col:.Text的不同,前者更高效;针对Up、Down等键的响应问题,提供了详细的解决方案。

1、自动选中某一行,设置好 selectionmode、backcolorsel、等属性

  msfg.row=1:  msfg.col=0:  msfg.colsel=msfg.cols-1

============================================================

2、.TextMartix(row,col)  的方式 效率上优于 .row: .col : .Text 的方式

============================================================

3、对Up、Down、PgUp、PgDn、Ctr+Up、Ctr+Dn键的响应问题

  (1) 正常情况下,按下上述键,表格的焦点行,会自动跳转,并且焦点行,始终在界面上可见

  (2) 如果在MSFG的RowColChange 或 EnterCell事件中对MSFG单元格的处理(用到了.row,.col去处理某些问题),这些影响到了上述键的使用,

    问题:焦点行会自动跳转,但界面上并不可见-------------应该是MSFG控件本身的问题

    解决:可以根据旧焦点行(oldRow),与当前焦点行(curRow),及2者差值(Abs(curRow-oldRow)),手动改变.TopRow属性

    

参照-----------------------
'
-----修改表格按键改变行,选中行在界面不可见问题----- If Abs(curRow - oldRow) = 1 Then 'Up ,Down 键 If curRow < oldRow Then If Not .RowIsVisible(curRow) Then '---------------Up .TopRow = .TopRow - 1 End If ElseIf curRow > oldRow And curRow < .Rows - 1 Then '--Down If Not .RowIsVisible(curRow + 1) Then .TopRow = .TopRow + 1 End If End If ElseIf Abs(curRow - oldRow) > 1 Then If curRow = .Rows - 1 Then '--------------------------Ctr+Down .TopRow = .Rows - 1 ElseIf curRow = .FixedRows Then '--------------------Ctr+Up .TopRow = .FixedRows ElseIf Not .RowIsVisible(curRow) Then ' If curRow > oldRow Then '-------------------------PgDn If curRow < .Rows - 1 Then .TopRow = oldRow Else .TopRow = .Rows - 1 End If Else '-----------------------------------------PgUp If curRow > .FixedRows Then .TopRow = curRow Else .TopRow = .FixedRows End If End If End If End If

 

转载于:https://www.cnblogs.com/xbj-hyml/p/3480208.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值