У меня есть стандарт Form
с только AxWMPLib.AxWindowsMediaPlayer
и без кода, кроме автогенерированного. Я получаю System.ArgumentException
дважды при каждом запуске приложения. В нем говорится, что объект не предоставляет интерфейс IPropertyNotifySink
. Но как его реализовать, поскольку у меня нет пространства имен, которое содержит его (Microsoft.VisualStudio.OLE.Interop)? И что мне делать в реализованных функциях (OnChanged(Int32)
и OnRequestEdit(Int32)
)?System.ArgumentException при установке AxWMPLib.AxWindowsMediaPlayer в форме
ответ
Это нормальный случай. Хороший объект ActiveX должен реализовывать интерфейс IPropertyNotifySink (неуправляемый COM-интерфейс), но от этого не требуется. Класс-оболочка AxHost просто слепо предполагает, что делает, поэтому пытается подписаться на нее, но внутренний конструктор ConnectionContainer обнаруживает, что это не так.
Что не фатальным, так как реализующий интерфейс не является обязательным, AxHost вызывает конструктор с аргументом throwException значение ЛОЖЬ. Таким образом, вы видите исключение первого шанса, поднятое в отладчике, но затем оно снова ловит его и возвращается. Fwiw, этот код можно было бы очень легко написать, чтобы вы вообще не увидели исключение, но программист Microsoft сделал ярлык с обработчиком исключений catch-em-all. Просто раздражает, вот и все.
Определенно не Ваша задача реализовать интерфейс, это задача управления. Поэтому попытка реализовать OnChanged() и OnRequestEdit() не имеет смысла.
Просто держите автомобиль, у вас нет настоящей проблемы.
И для чего был создан этот интерфейс? – JustLogin
Чтобы позволить хосту ActiveX сообщать об изменениях свойств запаса, которые имеют поведение окружающей среды. Свойство Font будет стандартным примером, в качестве элемента управления обычно используется тот же шрифт, что и его родительский элемент. BackColor - еще один. Не относится к WMP, это не тот тип управления, который ведет себя так же, как те, которые вы находите в панели инструментов WPF или Winforms. –
Вы изменили какие-либо свойства, или вы только что добавили компонент и отлаживали? –
@VisualVincent Просто добавил компонент, не более того. – JustLogin
Странно, какая ОС вы используете? –