我正在创建一个 Visual Studio 包(这是我的第一次),我的最终目标是为仅适用于某些文件类型的解决方案资源管理器创建一个上下文菜单项。(我认为这将是一个常见的事情,但没有找到任何像样的教程,所以如果你知道任何请告诉我)
我按照一个简单的 MSDN 指南首先在工具栏中创建了一个项目(我忘记了在哪里链接它),这很好。
然后我找到了一种将其移动到解决方案资源管理器上下文菜单的方法。这是通过操作.vsct
文件并具有如下元素来实现的:
<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_ITEMNODE"/>
这可能无关紧要,但我正在尝试设置场景。
现在,因为我只想显示某些文件类型的项目,所以我需要找到一种方法来在按下右键单击按钮时检查文件。缩短了长时间的搜索,我找到了这个并最终得到以下代码:
protected override void Initialize()
{
//stuff
OleMenuCommandService mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
menuItem.BeforeQueryStatus += menuItem_BeforeQueryStatus;
//more stuff
}
void menuItem_BeforeQueryStatus(object sender, EventArgs e)
{
var myCommand = sender as OleMenuCommand;
myCommand.Text = "NEW NAME";
}
在上面的示例中,我只是尝试设置文本以尝试证明它有效,我知道有一个Visible
属性,但我希望这一步首先起作用。该BeforeQueryStatus
事件被触发,调试显示代码按预期执行。但是,上下文菜单项没有变化,它与原始文本保持一致。
我在这里想念什么?为什么不更新?