我正在开发 word VSTO 插件,并且当用户通过更改 word 文档右下角的滑块或使用键盘和鼠标更改缩放级别时,我试图检测事件。但我没有成功。
当用户在 word 活动文档中更改缩放级别(缩小/缩小)时,是否有任何方法可以触发或检测事件。
如果有人对此有任何想法或任何替代方案,请提出建议。
谢谢。
我正在开发 word VSTO 插件,并且当用户通过更改 word 文档右下角的滑块或使用键盘和鼠标更改缩放级别时,我试图检测事件。但我没有成功。
当用户在 word 活动文档中更改缩放级别(缩小/缩小)时,是否有任何方法可以触发或检测事件。
如果有人对此有任何想法或任何替代方案,请提出建议。
谢谢。
Word 对象模型中没有用于缩放更改的内置事件。您可以使用以下方法设置计时器并查找Zoom
属性中的更改:
// Add these 2 class members.
System.Timers.Timer _zoomTimer = new System.Timers.Timer();
public double _lastZoomValue = 100; // default zoom
// in the Startup function of the addin, set the timer.
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
_zoomTimer.Elapsed += OnZoomChanged;
_zoomTimer.Interval = 1000;
_zoomTimer.Start();
}
// dispose the timer
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
_zoomTimer.Dispose();
}
// check if there is active window.
private void OnZoomChanged(object source, ElapsedEventArgs e)
{
_zoomTimer.Stop();
var app = this.Application;
if (app!=null && app.ActiveWindow != null && app.ActiveWindow.Zoom != _lastZoomValue)
{
_lastZoomValue = app.Application.ActiveWindow.Zoom;
// DO SOMETHING
}
_zoomTimer.Start();
}