0

我有一个宏,它将 Pending Changes 视图中的文件与 Source Control 上的最新版本进行比较。

过程:首先我选择文件,然后运行宏,这工作正常。我尝试分配几个键盘快捷键来运行这个宏:

Ctrl+Q,C
Ctrl+Q,Ctrl+Q
Ctrl+Q,Ctrl+C
Ctrl+T,Ctrl+Q
Ctrl+T,Ctrl+C
Ctrl+Shift+\

我能够在工具->选项->环境->键盘中将它们全部分配,并且它们都没有用于其他任何东西(如“当前使用的快捷方式”中所述)。但是,由于某种原因,Ctrl+Q、Ctrl+C 和 Ctrl+T、Ctrl+C 不起作用。其他工作正常。

那么,为什么 Ctrl+Q、Ctrl+C 或 Ctrl+T、Ctrl+C 不起作用?它是否尝试在 Pending Changes 视图中复制所选文件,而不是使用 Ctrl+C 作为宏快捷方式的第二部分?

编辑:

好的,首先这是宏代码:

Sub CompareMacro()
    DTE.ExecuteCommand("TeamFoundationContextMenus.SourceControlPendingChangesSourceFiles.Compare.TfsContextPendingCheckinsCompareWithLatestVersion")
End Sub

我对其进行了更多测试,这就是我发现的:

  • 如果“待更改”视图具有焦点,并且选择了“源文件”列表中的一个项目(因为它必须是此宏才能工作),则窗口将根本不接受 Ctrl+C 组合,状态栏将继续显示'(Ctrl+Q) 被按下。等待和弦的第二个键......'
    • 注意:在这些操作之后,我尝试从剪贴板粘贴,看起来它使用 Ctrl+C 部分进行了复制操作 - 粘贴时我得到了类似 'Filename.cs edit D:\path...' 的内容。
  • 如果“待更改”视图具有焦点并且没有选择“源文件”列表中的任何项目(我可以通过重新启动 Visual Studio 取消选择所有项目),则快捷方式将起作用,但宏将按预期失败(因为它需要选择项目)。
  • 如果选择了“源文件”中的一个项目,并且焦点从挂起的更改窗口移动到任何其他 Visual Studio 窗口(至少我尝试过的那些:例如主窗口、解决方案资源管理器、查找符号结果等),则快捷方式和宏将工作。如果我在按下任何键之前或在按下 Ctrl+Q 之后但在 Ctrl+C 之前移动焦点都没有关系,它在这两种情况下都可以工作。
  • 我什至尝试在主视觉工作室视图中选择一些代码,将焦点放在该主视图上 - 快捷方式和宏将在不将此代码复制到剪贴板的情况下工作(与焦点位于“待更改”时不同)。

在这种情况下,'Pending Changes' 处理 Ctrl+C 的方式是否与其他视图不同?

4

0 回答 0