以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]在代码中如何增加控件事件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=52840)

--  作者:goldcicada
--  发布时间:2014/6/24 9:08:00
--  [求助]在代码中如何增加控件事件
例如有2个按钮

其中按钮1单击事件为
private sub button1_click() AddHandle button1.Click
{源码...}
end sub

其中按钮2想要增加按钮1中事件,如何增加?

是否是这样:AddHandle button2.Click , AddressOf button1.Click

但是这样编译时发生错误。


--  作者:Bin
--  发布时间:2014/6/24 9:13:00
--  
直接用全局窗口事件,更加简便




--  作者:goldcicada
--  发布时间:2014/6/24 10:29:00
--  
 尝试过了,但在全局单击事件中没反映。

有个frmLogin的窗体,窗体中有2个按钮,1个按钮名称是"btnLogin",另一个动态创建的按钮名称是"_btnLogin"。

窗体frmLogin中的Click全局代码如下:

Forms("frmLogin").Text = e.Sender.Name
Select Case e.Sender.Name
    Case "_btnLogin"
        Forms("frmLogin").Close()
        Forms("frmMain").Open()  \' 另一个窗体
    Case "_btnCancel"
        Syscmd.Project.Exit()  \' 退出Foxtable
End Select

运行窗体后,单击"_btnlLogin"按钮没反映。


--  作者:有点甜
--  发布时间:2014/6/24 10:38:00
--  

加入代码看看是否触发了事件

 

Forms("frmLogin").Text = e.Sender.Name

msgbox(e.Sender.Name)
Select Case e.Sender.Name
    Case "_btnLogin"
        Forms("frmLogin").Close()
        Forms("frmMain").Open()  \' 另一个窗体
    Case "_btnCancel"
        Syscmd.Project.Exit()  \' 退出Foxtable
End Select


--  作者:goldcicada
--  发布时间:2014/6/24 10:44:00
--  
 试过了,但没有触发msgbox函数。
--  作者:Bin
--  发布时间:2014/6/24 10:46:00
--  
上例子
--  作者:有点甜
--  发布时间:2014/6/24 10:46:00
--  

 你这个button1,是怎样添加进去的?

 

 要这样添加 http://www.foxtable.com/help/topics/1409.htm

 


--  作者:goldcicada
--  发布时间:2014/6/24 10:50:00
--  
 噢,可能是控件动态增加的方式不对,导致全局事件没能触发。
我是这样动态增加控件的:
Forms("frmLogin").Panel.Controls.Add(btnAdd)


--  作者:Bin
--  发布时间:2014/6/24 10:54:00
--  
8楼这种方式只能自己添加事件了,要用7楼这种方式才会触发全局事件
--  作者:goldcicada
--  发布时间:2014/6/24 10:58:00
--  
 我尝试使用你们的方式动态增加控件,但是我增加的是第三方的控件,跟WinForm.Control的控件类型不兼容。
你们增加控件的方法:e.Form.AddControl(x)
其中x是第三方控件,在编译的守候发生类型不兼容的错误。