Согласно вашему коду, вы подписываетесь на событие CellChanged в объекте Application. Вы действительно хотите все события CellChanged для всего во всем приложении?
this.visioControl.Window.Application.BeforeShapeDelete += new Microsoft.Office.Interop.Visio.EApplication_BeforeShapeDeleteEventHandler(Application_BeforeShapeDelete);
this.visioControl.Window.Application.CellChanged += new Microsoft.Office.Interop.Visio.EApplication_CellChangedEventHandler(Application_CellChanged);
Я не могу вспомнить порядок событий, которые происходят при открытии элемента управления Visio и активации в нем окна ... Меня не удивит, когда я узнаю об отсутствии ActivePage во время DocumentOpened или что this.visioControl .Window не готово для некоторых вызовов методов во время вашего обработчика Window_Loaded.
Соблюдаете ли вы какие-либо исключения? (Или фреймворк обрабатывает некоторые и скрывает их от вас, так что вы, возможно, не выполняете весь код, который, как вы думаете, вы используете во время ваших обработчиков ...?)
Существует программа-шпион Visio, которую вы, возможно, захотите найти. Может быть более подходящее событие, которое вы можете подключить, чтобы подписаться на события, связанные со страницами и фигурами в экземпляре VisOcx.
WindowActivation также должна запускаться, когда элемент управления переходит в режим выполнения, и в этот более поздний момент времени все «более готово» ...