0

System.ArgumentException我有一个标准Form只有一个AxWMPLib.AxWindowsMediaPlayer和除自动生成的代码。每次应用启动时,我会获得System.ArgumentException两次。它说,该对象不提供IPropertyNotifySink接口。但如何实现它,因为我没有名称空间,它包含它(Microsoft.VisualStudio.OLE.Interop)?我在执行的功能(OnChanged(Int32)OnRequestEdit(Int32))中要做些什么?将AxWMPLib.AxWindowsMediaPlayer放入表格

+0

您是否更改过任何属性,或者只是添加了组件并进行了调试? –

+0

@VisualVincent只需添加组件,仅此而已。 – JustLogin

+0

奇怪,你在使用什么操作系统? –

回答

1

这是一个正常的事故。一个行为良好的ActiveX对象应该实现IPropertyNotifySink接口(一个非托管的 COM接口),但不需要这样做。 AxHost包装类只是盲目地假设它,所以试图订阅它,但内部的ConnectionContainer构造函数发现它没有。

哪个致命的,因为实现接口是可选的,AxHost来电设置为false的throwException参数的构造。因此,您可以看到调试器中引发的第一次机会异常,然后再次捕获并返回。 Fwiw,那些代码可以非常容易地编写,所以你根本不会看到这个异常,但是微软程序员用一个catch-em-all异常处理程序来做一个快捷方式。只是烦人,就是这样。

绝对是不是您的工作实现界面,它是控件的工作。所以试图实现OnChanged()和OnRequestEdit()没有意义。

只要继续驾驶,就没有真正的问题。

+0

这个界面最初是为什么创建的? – JustLogin

+1

允许ActiveX主机向具有环境行为的库存属性报告更改。 Font属性将是一个标准示例,控件通常使用与其父项相同的字体。 BackColor是另一个。不适用于WMP,它不是那种类似WPF或Winforms工具箱中找到的控件。 –