delphi - C#处理delphi activeX控件事件

标签 delphi events activex

我用Delphi实现了一个activeX控件。现在我想为其添加一个事件。我使用类型库编辑器来添加这样的事件。

procedure OnActionMethod(ActionType: Integer; x1: Integer; 
  y1: Integer; x2: Integer; y2: Integer; param1: Double); dispid 213;

TezDICOMXOnActionMethod = procedure(ASender: TObject; 
  ActionType: Integer; x1: Integer; y1: Integer; x2: Integer; y2: Integer; 
  param1: Double) of object;

一切编译正常。

现在我构建一个 C# 应用程序,使用该 ActiveX 控件并尝试实现一个事件处理程序。

private AxezDICOMax.AxezDICOMX the_ezdicom; // this is the activeX object

public void onActionHandler(object sender,long actiontype, 
    long x1, long y1, long  x2,long  y2, double param1)
{
  MessageBox.Show("abcabc" + x1.ToString() + x2.ToString());
}

private void MainForm_Load(object sender, System.EventArgs e)
{           
  the_ezdicom.OnActionMethod += new 
    AxezDICOMax.IezDICOMXEvents_OnActionMethodEventHandler(this.onActionHandler);
}

但是编译器提示这个错误

Error 1  No overload for 'onActionHandler' matches delegate 
  'AxezDICOMax.IezDICOMXEvents_OnActionMethodEventHandler'
  OnActionMethodEventHandler

我做错了什么?我在 Delphi 源代码中的任何地方都没有找到 OnActionMethodEventHandler()

最佳答案

我使用Visual Studio的自动完成功能来知道真正的方法应该是。

void  onActionHandler(object sender, AxezDICOMax.IezDICOMXEvents_OnActionMethodEvent e)
{
    MessageBox.Show("abc");
}

关于delphi - C#处理delphi activeX控件事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12382606/

相关文章:

delphi - 在 TOpenDialog 中右键单击文件时,使用自定义样式会显示无效字符

multithreading - Delphi COM 对象多线程

java - 如何从 "Event"对象获取发生此事件的对象?

javascript - 使用 jQuery 触发 keyup 事件

vb6 - VB6,ActiveX:无法创建对OCX的引用

ms-access - Microsoft Access 2007 和 2010 : "Run-Time Error ' 42 9': ActiveX component can' t create object"

delphi - 如何获取 TDbGrid 中光标下的文本

delphi - 将 PDF 文档 (*.pdf) 转储到文本?

events - 信号和槽 vs. 事件和事件监听器

c# - 如何在 C# 中为桌面应用程序创建 activeX 组件