MS Word 加载项捕捉文档缩放更改
MS Word AddIn Catch Document Zoom change
我正在开发 word VSTO 插件,我正在尝试检测用户通过更改 word 文档右下角的滑块或使用键盘和鼠标更改缩放级别时的事件。但是我没有成功。
当用户在 word 活动文档中更改缩放级别(缩放 out/in)时,是否有任何方法可以触发或检测事件。
如果有人对此有想法或任何替代方案,请提出建议。
谢谢。
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();
}
我正在开发 word VSTO 插件,我正在尝试检测用户通过更改 word 文档右下角的滑块或使用键盘和鼠标更改缩放级别时的事件。但是我没有成功。
当用户在 word 活动文档中更改缩放级别(缩放 out/in)时,是否有任何方法可以触发或检测事件。
如果有人对此有想法或任何替代方案,请提出建议。
谢谢。
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();
}