我已经有一段时间了这个问题,我无法在任何地方找到解决方案。我目前正在为 Visual Studio 2010 编写一个加载项(使用 C#)。我在 VS 菜单栏中添加了一个新菜单。在这个菜单中有几个命令,例如“login”和“logout”。我想强制执行的行为是两个命令都是可见的,但最初只会启用“登录”而最初禁用“注销”。
我通过 OnConnection() 方法中的以下代码实现了这一点:
LoginCommand = applicationObject.Commands.AddNamedCommand(
addInInstance,
LOGIN_NAME,
LOGIN_CAPTION,
LOGIN_TOOLTIP,
true, 59,
ref contextUIGuids,
(int)(vsCommandStatus.vsCommandStatusSupported |
vsCommandStatus.vsCommandStatusEnabled)
);
LogoutCommand = applicationObject.Commands.AddNamedCommand(
addInInstance,
LOGOUT_NAME,
LOGOUT_CAPTION,
LOGOUT_TOOLTIP,
true, 59,
ref contextUIGuids,
(int)(vsCommandStatus.vsCommandStatusSupported)
);
当我发出“登录”命令并成功登录时,我希望它反过来,以便在菜单中禁用“登录”命令并启用“注销” - 直到我注销。
这就是我卡住的地方。我只是不知道在哪里以及如何准确地实现命令的状态切换。我想我必须在 QueryStatus() 方法中处理这个问题,但微软关于这个主题的文档不太有用或令人大开眼界。