Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言处理ActiveX控件事件#_C#_Events_Activex - Fatal编程技术网

C# 用C语言处理ActiveX控件事件#

C# 用C语言处理ActiveX控件事件#,c#,events,activex,C#,Events,Activex,我有一个ActiveX控件(一个OCX文件),它会引发一个事件。我想在C#赶上那场比赛。我该怎么做呢 我可以用JavaScript捕获控件的事件,下面是代码 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>New Page 1</title> </head> <body >

我有一个ActiveX控件(一个OCX文件),它会引发一个事件。我想在C#赶上那场比赛。我该怎么做呢

我可以用JavaScript捕获控件的事件,下面是代码

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
</head>
<body >
<script type="text/javascript" for="CRMCntrl1" event="NewCall(szCallID, szCallType, nCallStartTime, szCLI, szOtherInfo)">       
        document.getElementById("abc").innerHTML="CallID: " + szCallID + "</br>" +
            "CallType: " + szCallType + "</br>" + 
            "CallStartTime: " + nCallStartTime + "</br>" +
            "CLI: " + szCLI + "</br>" + 
            "OtherInfo: " + szOtherInfo + "</br>" ;

</script>
<p>
<object id="CRMCntrl1" classid="clsid:D26FE0DF-5CAC-44E4-AA7A-E1794D9634D1">
</object>
</p>
<div id="abc">
</div>
</body>
</html>

你发布的内容应该有效,除了。。。您对表单本身的定义所做的操作看起来很有趣。您是从Form和CRMCntrl派生类Form1吗?这不会以您期望的方式创建控件的实例。尝试将ActiveX控件的新实例放在表单上,看看会发生什么。

您发布的内容应该可以正常工作,除了。。。您对表单本身的定义所做的操作看起来很有趣。您是从Form和CRMCntrl派生类Form1吗?这不会以您期望的方式创建控件的实例。尝试将ActiveX控件的一个新实例放在表单上,看看会发生什么。

从您的代码看,似乎
CRMCntrl
是一个带有单个
NewCall
事件的接口。因此,如果您想实现该接口,那么您就是负责触发事件的人,而不是处理它

要处理ActiveX控件触发的事件,需要使用实际控件的实例,这就是事件的来源。如果使用设计器添加控件,请尝试查找包含控件引用的专用字段的名称

不知何故,您需要改变这一点:

this.NewCall +=
       new _DCRMCntrlEvents_NewCallEventHandler(this.OnNewCall);
为此:

myActiveXControl.NewCall +=
       new _DCRMCntrlEvents_NewCallEventHandler(this.OnNewCall);

其中
myActiveXControl
是控件的名称(它还实现了提供事件的接口)。

从代码看,似乎
CRMCntrl
是一个带有单个
NewCall
事件的接口。因此,如果您想实现该接口,那么您就是负责触发事件的人,而不是处理它

要处理ActiveX控件触发的事件,需要使用实际控件的实例,这就是事件的来源。如果使用设计器添加控件,请尝试查找包含控件引用的专用字段的名称

不知何故,您需要改变这一点:

this.NewCall +=
       new _DCRMCntrlEvents_NewCallEventHandler(this.OnNewCall);
为此:

myActiveXControl.NewCall +=
       new _DCRMCntrlEvents_NewCallEventHandler(this.OnNewCall);
其中
myActiveXControl
是控件的名称(它还实现了提供事件的接口)