about AxVSFlex control

     第一篇自己的文章,呵呵,文笔不好,全当是对工作的总结了。。。。。 

     在vb.net里我们有时候会用到该控件,我在工作中遇到了需要使用该控件的地方,现将自己的体会写出来,大家批评(也留着以后自己用^.^) 我遇到的问题是:如何删除该控件的一行数据(通过按下delete键实现该功能),分析如下:1、如何捕获delete键被按下2、如何删除一行数据。

1、如何捕获delete键被按下。 应该窗体中的每个控件都能捕获按键消息(猜的,因为试了好几个控件都能捕获,故做此猜想),选中AxVSFlex 控件,通过properties 选项(不是通过右键,而是在vs2005窗体右上角工具栏(应该是工具栏,汗……分不清(如没有,可在工具栏空白处右键,选择standard即可))有一排图标,左起第二个(有个手的那个图标,鼠标放上去悬停的时候会弹出 Properties Window)),选择Event(闪电图标),里面有关于AxVSFlex 控件的事件,我用到的是KeyDown Event(其他几个类似的我也不太清楚,以后研究),输入函数名双击或者按回车即可进入函数体进行代码的编写。捕获按键消息可通过函数的第二个参数e获得。判断delete是否被按下可用如下代码 if e.keyCode = keys.Delete then ……其中keys.Delete 可以换成别的,则是捕获的其他的按键消息,到此 捕获delete按键写好了,其实很简单,我搞了好久。。。。。。。。

 

2、如何删除一行数据。好像没有专门的函数实现此功能,只能自己写了。思路如下,先把AxVSFlex 控件中的内容保存到ArrayList里,删除ArrayList中对应的一行内容,然后再从ArrayList中把数据拷贝到AxVSFlex 中。说起来简单,在做的过程中遇到了一些问题,最主要的是效率问题,从AxVSFlex 拷贝到ArrayList中的时候如果不加判断则会连空行一起拷贝过去,如果有几万行,那您就等着吧。。。。故我们要判断出有效数据有多少行(两行之间允许有空行,这是一点非常需要注意的),利用二层循环把AxVSFlex 中的内容读到ArrayList中。

Dim GridArrayTmp As New ArrayList 声明的时候要加上new(应该是分配好内存了吧,不太清楚)

删除ArrayList中的一行很简单,通过ArrayList本身的RemoveAt函数即可删除。(和C++中的vector很像)

然后通过二层循环(这个应该比较简单)再把ArrayList中的内容拷贝到AxVSFlex 中即可。

先写这么多吧,以后再补充。

修正:

2.发现一个更好的方法,不用借助arraylist也可以,思路如下,比如当前选的是第n行,那么从第n+1行开始一直到grid.rows-1 一次调用grid的set_textmatrix(row, col, string)函数就行了。原来问题可以这么简单。。。。。。。。。。。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值