Есть решение этой проблемы, немного грязное, но оно работает.
Дело в том, что окно справки, открываемое HelpProvider, всегда находится над его родительским оконным элементом управления, который определяется экземпляром Control в первом параметре Help.ShowHelp
. Даже если вы укажете null
, основная форма приложения все еще используется в качестве родительского окна.
Чтобы избежать этого, можно создать фиктивную форму, которая будет использоваться в качестве родительской формы справки. Эта форма никогда не будет отображаться, но, тем не менее, окно справки будет «сверху», фактически НЕ поверх всех других окон приложения.
public static class AppHelp
{
private static Form mFrmDummyHost = new Form();
public static void ShowChm()
{
Help.ShowHelp(mFrmDummyHost, "my_help.chm");
}
}
Конечно, все другие Help.ShowHelp
перегрузки также могут быть названы таким образом.
Надеюсь, это поможет таким людям, как я, в поиске ответов на вопросы, которые никогда не устареют;)