当用户在visio窗口的页面之间切换时,我正在尝试执行一些代码。所以我试图抓住WindowTurnedToPage事件,但它根本不起作用。他家人的其他活动可以……
我想你可以用 Application.WindowTurnedToPage 。
Application.WindowTurnedToPage
这将触发应用程序中的所有页面切换。
你的第一个版本, Application.Window.WindowTurnedToPage 没用,因为 Application.Window 是主应用程序窗口(即框架窗口 - 而不是绘图窗口),因此它没有任何页面。
Application.Window.WindowTurnedToPage
Application.Window
第二个版本 Application.ActiveWindow.WindowTurnedToPage 可能有一个缺陷 - 它会将您的事件绑定到执行代码时处于活动状态的窗口。如果稍后,您打开另一个文件,您的代码将不会触发该文件窗口的事件。
Application.ActiveWindow.WindowTurnedToPage
但是,如果您只想捕获单个窗口的页面切换,那可能没问题。
这可能看起来很愚蠢,但我得到答案,我发布给任何发现问题通过它的人。 错误的方式和好的方式之间的差异很简单:
错误: Application.Window.WindowTurnedToPage += new Visio.EWindow_WindowTurnedToPageEventHandler(Window_WindowTurnedToPage);
Application.Window.WindowTurnedToPage += new Visio.EWindow_WindowTurnedToPageEventHandler(Window_WindowTurnedToPage);
正确: Application.ActiveWindow.WindowTurnedToPage += new Visio.EWindow_WindowTurnedToPageEventHandler(Window_WindowTurnedToPage);
Application.ActiveWindow.WindowTurnedToPage += new Visio.EWindow_WindowTurnedToPageEventHandler(Window_WindowTurnedToPage);
我需要提一下,如果你使用第二个实现,它将不适用于InternalStartup()。所以你需要在初始化窗口后实现它。