2012-08-04 14 views
0

我有一个OCX,我在服务中使用它,并且没有可见的形式。 它需要一个窗体作为父项,否则它的事件不会被解雇 如何让ocx处理消息并激发事件?当父级未设置为可见形式时,OCX事件未被触发

这里是我的代码:

public AxKylixSMS SMS; 

SMS = new AxKylixSMS();    

SMS.CreateControl(); 

SMS.NewDeliveryReport += new _DKylixSMSEvents_NewDeliveryReportEventHandler(OnDeliveryReport); 

OnDeliveryReport事件不被解雇。我怎么解决这个问题 ?

+0

几乎所有的ActiveX控件都需要一个主机窗口来激活。不托管它的典型失败模式是它拒绝提出事件。由Application.Run()启动的消息循环也很重要。您可以隐藏它所在的窗口,请参阅http://stackoverflow.com/a/3742980/17034 – 2012-08-04 15:10:15

回答

0

使用这种引用您的形式 尝试:

public AxKylixSMS SMS; 

SMS = new AxKylixSMS();    

SMS.CreateControl(); 

SMS.NewDeliveryReport += new _DKylixSMSEvents_NewDeliveryReportEventHandler(this.OnDeliveryReport); 
+0

使用“this”关键字无差异。当设置父表单时,会触发该事件,并使用相同的代码以及没有表单的方式。 – 2012-08-04 13:08:06

+0

你使用的是ocx,但是这个ocx是嵌入到服务中的,请问有什么服务? – 2012-08-04 13:13:46

+0

不,我正在编写Windows服务,并在该服务中使用OCX。 – 2012-08-04 13:21:29