System.ArgumentException 将 AxWMPLib.AxWindowsMediaPlayer 放入表格
System.ArgumentException on putting AxWMPLib.AxWindowsMediaPlayer in Form
我有一个标准 Form
,只有一个 AxWMPLib.AxWindowsMediaPlayer
,除了自动生成之外没有任何代码。每次应用程序启动时,我都会得到 System.ArgumentException
两次。它说,该对象不提供 IPropertyNotifySink
接口。但是如何实现它,因为我没有包含它的名称空间 (Microsoft.VisualStudio.OLE.Interop)?我在实现的功能(OnChanged(Int32)
和 OnRequestEdit(Int32)
)中必须做什么?
这是正常的事故。一个行为良好的 ActiveX 对象应该实现 IPropertyNotifySink 接口(一个 unmanaged COM 接口),但并不是必须这样做。 AxHost 包装器 class 只是盲目地假设它有,所以尝试订阅它,但内部 ConnectionContainer 构造函数发现它没有。
不是致命的,因为实现接口是可选的,AxHost 调用构造函数时 throwException 参数设置为 false。因此,您看到调试器中引发了第一次机会异常,但随后它再次捕获并 returns。 Fwiw,该代码本来可以很容易地编写,因此您根本看不到异常,但是 Microsoft 程序员采取了一条捷径,使用 catch-em-all 异常处理程序。就是烦人而已。
实现接口绝对不是你的工作,它是控件的工作。所以尝试实现 OnChanged() 和 OnRequestEdit() 没有意义。
继续开车,你没有真正的问题。
我有一个标准 Form
,只有一个 AxWMPLib.AxWindowsMediaPlayer
,除了自动生成之外没有任何代码。每次应用程序启动时,我都会得到 System.ArgumentException
两次。它说,该对象不提供 IPropertyNotifySink
接口。但是如何实现它,因为我没有包含它的名称空间 (Microsoft.VisualStudio.OLE.Interop)?我在实现的功能(OnChanged(Int32)
和 OnRequestEdit(Int32)
)中必须做什么?
这是正常的事故。一个行为良好的 ActiveX 对象应该实现 IPropertyNotifySink 接口(一个 unmanaged COM 接口),但并不是必须这样做。 AxHost 包装器 class 只是盲目地假设它有,所以尝试订阅它,但内部 ConnectionContainer 构造函数发现它没有。
不是致命的,因为实现接口是可选的,AxHost 调用构造函数时 throwException 参数设置为 false。因此,您看到调试器中引发了第一次机会异常,但随后它再次捕获并 returns。 Fwiw,该代码本来可以很容易地编写,因此您根本看不到异常,但是 Microsoft 程序员采取了一条捷径,使用 catch-em-all 异常处理程序。就是烦人而已。
实现接口绝对不是你的工作,它是控件的工作。所以尝试实现 OnChanged() 和 OnRequestEdit() 没有意义。
继续开车,你没有真正的问题。