首页 > 解决方案 > MS Word AddIn Catch 文档缩放更改

问题描述

我正在开发 word VSTO 插件,并且当用户通过更改 word 文档右下角的滑块或使用键盘和鼠标更改缩放级别时,我试图检测事件。但我没有成功。

当用户在 word 活动文档中更改缩放级别(缩小/缩小)时,是否有任何方法可以触发或检测事件。

如果有人对此有任何想法或任何替代方案,请提出建议。

谢谢。

标签: c#ms-wordvstoword-addinsword-interop

解决方案


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();
    }

推荐阅读