How to push F1 context keywords for property pages in the project designer?




Background:


IPropertyPage.Help is not invoked on property pages integrated with the Application Designer. Consequently, you need to push an F1 keyword by calling IHelpService.AddContextAttribute, similar to what the VB .NET and C# project property pages do.


Solution:


Using the IronPython Integration sample as a test bed for illustration purposes, you can push an F1 context keyword as follows:


Add the following data member to the BuildPropertyPage in BuildPropertyPage.cs:


private System.IServiceProvider serviceProvider;



Override the SetPageSite method as follows:


public override void SetPageSite(Microsoft.VisualStudio.OLE.Interop.IPropertyPageSite theSite)


{


   base.SetPageSite(theSite);


   this.serviceProvider = (System.IServiceProvider)theSite;


}


Then override the Show method to call IHelpService.AddContextAttribute whenever the page is being shown. For example:


public override void Show(uint cmd)


{


   base.Show(cmd);


   if (cmd != 0 /*SW_HIDE*/)


   {


      IHelpService helpService = (IHelpService)serviceProvider.GetService(typeof(IHelpService));


      helpService.AddContextAttribute(“Keyword”, “ip.BuildPage”, HelpKeywordType.F1Keyword);


   }


}


Finally, to test if your keyword is being pushed, modify the “HKCU\<root hive>\Dynamic Help\Display Debug Output in Retail” to “Yes” (without the quotations marks) .


Restart Visual Studio using the <root hive> specified above, and bring up the Dynamic Help Tool Window. At the bottom of the Dynamic Help Tool Window, you should see your keyword listed with any entry like:


   (Kwd) keyword=ip.BuildPage


Additional resources:


·         Help Authoring and Integration


·         Tutorial: How to Integrate Help Documentation into Visual Studio