在 Visio AddIn 项目中捕获 WindowTurnedToPage 事件
Catch WindowTurnedToPage Event in a Visio AddIn project
当用户在 visio window 的页面之间切换时,我正在尝试执行一些代码。所以我试图捕捉 WindowTurnedToPage 事件,但它根本不起作用。
他家的其他事情都能被抓到,他们该反应的时候就反应。但是 WindowTurnedToPage 和 BeforeWindowPageTurn 没有响应。
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
Application.Window.WindowTurnedToPage += new Visio.EWindow_WindowTurnedToPageEventHandler(Window_WindowTurnedToPage);
}
private void Window_WindowTurnedToPage(Visio.Window Window)
{
MessageBox.Show("Page changed");
}
请提供任何帮助,我们将不胜感激。应该怎样捕捉翻页事件?
这可能看起来很愚蠢,但我找到了答案,我 post 任何发现这个问题的人都可以通过它。
走错路和走好路的区别很简单:
错误:Application.Window.WindowTurnedToPage += new Visio.EWindow_WindowTurnedToPageEventHandler(Window_WindowTurnedToPage);
正确:Application.ActiveWindow.WindowTurnedToPage += new Visio.EWindow_WindowTurnedToPageEventHandler(Window_WindowTurnedToPage);
我需要指出的是,如果您使用第二种实现方式,它将无法在 InternalStartup() 上运行。所以你需要在 window.
初始化之后实现它
我想你可以使用 Application.WindowTurnedToPage
。
这将触发应用程序中的所有页面切换。
您的第一个版本 Application.Window.WindowTurnedToPage
没有工作,因为 Application.Window
是主要应用程序 window(即框架 window - 不是绘图 window),所以它没有任何页面。
第二个版本 Application.ActiveWindow.WindowTurnedToPage
可能有一个缺陷 - 它会将您的事件绑定到您执行代码时处于活动状态的 window。如果稍后打开另一个文件,您的代码将不会触发该文件的 window.
事件
但是,如果您只想捕获单个 window 的页面切换,那可能没问题。
当用户在 visio window 的页面之间切换时,我正在尝试执行一些代码。所以我试图捕捉 WindowTurnedToPage 事件,但它根本不起作用。 他家的其他事情都能被抓到,他们该反应的时候就反应。但是 WindowTurnedToPage 和 BeforeWindowPageTurn 没有响应。
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
Application.Window.WindowTurnedToPage += new Visio.EWindow_WindowTurnedToPageEventHandler(Window_WindowTurnedToPage);
}
private void Window_WindowTurnedToPage(Visio.Window Window)
{
MessageBox.Show("Page changed");
}
请提供任何帮助,我们将不胜感激。应该怎样捕捉翻页事件?
这可能看起来很愚蠢,但我找到了答案,我 post 任何发现这个问题的人都可以通过它。 走错路和走好路的区别很简单:
错误:Application.Window.WindowTurnedToPage += new Visio.EWindow_WindowTurnedToPageEventHandler(Window_WindowTurnedToPage);
正确:Application.ActiveWindow.WindowTurnedToPage += new Visio.EWindow_WindowTurnedToPageEventHandler(Window_WindowTurnedToPage);
我需要指出的是,如果您使用第二种实现方式,它将无法在 InternalStartup() 上运行。所以你需要在 window.
初始化之后实现它我想你可以使用 Application.WindowTurnedToPage
。
这将触发应用程序中的所有页面切换。
您的第一个版本 Application.Window.WindowTurnedToPage
没有工作,因为 Application.Window
是主要应用程序 window(即框架 window - 不是绘图 window),所以它没有任何页面。
第二个版本 Application.ActiveWindow.WindowTurnedToPage
可能有一个缺陷 - 它会将您的事件绑定到您执行代码时处于活动状态的 window。如果稍后打开另一个文件,您的代码将不会触发该文件的 window.
但是,如果您只想捕获单个 window 的页面切换,那可能没问题。