2.9更新用户界面

本文介绍如何在Visual Studio环境中高效更新用户界面(UI)。探讨了在Win32应用程序中使用UpdateCommandUI方法的不同策略,以及如何避免性能下降。还讨论了在不同上下文中使用此方法的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更新用户界面

Visual Studio 2015
 

若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档

实现命令后,您可以添加代码以使用新命令的状态更新用户界面。

在典型的 Win32 应用程序,可以连续轮询命令集,可以按用户查看这些调整各个命令的状态。 但是,由于Visual Studio外壳程序可以承载无限的数量的 Vspackage,广泛轮询可能会降低响应性,尤其在托管的代码和 COM 之间的互操作程序集之间轮询

若要更新 UI

  1. 执行以下步骤之一:

    • 调用UpdateCommandUI方法。

      IVsUIShell界面可从SVsUIShell服务,但,如下所示。

      C#
      void UpdateUI(Microsoft.VisualStudio.Shell.ServiceProvider sp)  
      {  
          IVsUIShell vsShell = (IVsUIShell)sp.GetService(typeof(IVsUIShell));  
          if (vsShell != null)  
          {  
              int hr = vsShell.UpdateCommandUI(0);  
              Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr);  
          }  
      }  
      
      
      

      如果参数的UpdateCommandUI为非零 (TRUE),然后以同步方式和立即执行更新。 我们建议您传递零 (FALSE) 为此参数,以帮助保持良好的性能。 如果你想要避免缓存,应用DontCache标志时在.vsct 文件中创建的命令。 不过,请谨慎使用此标志或性能可能会降低。 有关命令标志的详细信息,请参阅命令标志元素文档。

    • 在承载在窗口中使用称为就地激活模型的 ActiveX 控件的 Vspackage,它可能更方便地使用UpdateUI方法。 UpdateCommandUI中的方法IVsUIShell接口和UpdateUI中的方法IOleInPlaceComponentUIManager接口在功能上等效。 同时会导致该环境以重新查询所有命令的状态。 通常情况下,不立即执行更新。 相反,更新推迟到空闲时间。 命令行界面缓存命令状态来帮助保持良好的性能。 如果你想要避免缓存,应用DontCache标志时在.vsct 文件中创建的命令。 不过,该标志谨慎使用因为性能可能会降低。

      请注意,您可以获得IOleInPlaceComponentUIManager接口通过调用QueryInterface方法IOleComponentUIManager对象,或通过获取从接口SOleComponentUIManager服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值