控制属性被编译器接受,导致UserControl中的运行时“不存在”错误 - 但在运行时工作正常

时间:2010-09-28 07:52:51

标签: c# activex

我正在使用LeadTools Multimedia视频捕获控件,该控件显示为AxltmmCaptureCtrl类型。在我的代码中,我有以下几行:

AxltmmCaptureCtrl1.VideoWindowSizeMode = LTMMLib.ltmmSizeMode.ltmmFit;

编译得很好,没有来自编译器的投诉甚至警告。但是当我在运行时使用该东西时,我收到以下错误:

Method not found: 'Void AxLTMMLib.AxltmmCaptureCtrl.set_VideoWindowSizeMode(LTMMLib.ltmmSizeMode)'.

WTF? Intellisense选择了该方法,编译器就可以了 - 但是在 runtime 中突然判断该方法不存在?

还有一些其他属性(并非所有)都表现出类似的行为。它似乎没有区分塞特犬和吸气剂。

有什么想法吗?

编辑: Curiouser和curiouser ......问题似乎只发生在 UserControl 的运行时,即在设计模式下。我已将此LeadTools控件放入我自己的UserControl中,当我将该控件放到另一个表单上时,我得到了“找不到方法”错误。但是当它在运行时(“真正的”运行时,即不是UserControl运行时)时,代码完美运行!这有多奇怪?

1 个答案:

答案 0 :(得分:1)

您正在针对互操作程序集进行编译 - 一个用于模拟底层COM API的托管/ .NET程序集。这里最可能的问题是版本控制;也许该属性存在于托管PIA中,但在您拥有的COM版本中缺失。