以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]删除多行数据后的PerformClick事件似乎不起作用  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=96283)

--  作者:chnfo
--  发布时间:2017/2/17 10:13:00
--  [求助]删除多行数据后的PerformClick事件似乎不起作用
表A的DataRowDeleted事件:

If Forms("X").Opened Then
    MessageBox.Show("窗口正打开着呢")
    Forms("X").Controls("Button1").PerformClick()
    MessageBox.Show("重新刷新表成功")
End If

当选择表A中的一行数据删除时,窗口X中的button1模拟单击事件成功,窗口表的数据刷新了

但当选择表A中的多行数据删除时,每删除一行,都会message信息出来,但是窗口表的数据并没有刷新。但手工去点窗口中的button1后,窗口表的数据又刷新成功。

这是为什么呢?

从表象上来看,选择多行(如5行)数据删除时,窗口表中的数据行并没有减少,会message五次出来,当最后一次message后,选定的5行数据在窗口表中会一起删除。

--  作者:有点色
--  发布时间:2017/2/17 10:26:00
--  

1、DataRowDeleted事件,是每删除一行,就会触发一次的。

 

2、你应该手工做一个删除按钮,这样简单方便。

 

3、如果要用DataRowDeleted事件,你可以在事件里,开启一个5秒后启动的计划任务,用来执行提示和刷新代码。


--  作者:chnfo
--  发布时间:2017/2/17 11:11:00
--  

1、DataRowDeleted事件,是每删除一行,就会触发一次的。

-----这个可以理解,也没有问题

 

2、你应该手工做一个删除按钮,这样简单方便。

-----一般情况下,是直接使用右键的(这样操作方便些),如果要做一个删除按钮也可以,就是用下面的代码而已

With Tables("A")
    For
i As Integer = .BottomPosition To .TopPosition Step -1
        .Rows(i).Delete()

    Next
End
With

 

3、如果要用DataRowDeleted事件,你可以在事件里,开启一个5秒后启动的计划任务,用来执行提示和刷新代码。

-----这个不太好,因为删除之后,希望马上就能看到结果,如果要做延时,还要等,不爽呀。


--  作者:有点色
--  发布时间:2017/2/17 11:14:00
--  

你可以自己做右键菜单,替换原来的。

 

也可以,把系统的右键菜单的删除代码改成你自己的。


--  作者:chnfo
--  发布时间:2017/2/17 11:20:00
--  
我的目的不是删除,是删除之后窗口中的button的PerformClick事件起作用。
--  作者:有点色
--  发布时间:2017/2/17 11:21:00
--  
以下是引用chnfo在2017/2/17 11:20:00的发言:
我的目的不是删除,是删除之后窗口中的button的PerformClick事件起作用。

 

是的啊,代码自己控制,删除结束的后面写上你另外的代码。


--  作者:chnfo
--  发布时间:2017/2/17 11:42:00
--  
这个主意不错。谢谢。