Help.ShowHelp API 可以修改为简单地调用 CHM 文件吗?

Can the Help.ShowHelp API be modified to simply invoke the CHM file?

这是我在 WinForm 按钮点击处理程序中显示帮助主题的主要方式:

private void buttonHelp_Click(object sender, EventArgs e)
{
    CutTools.DisplayHelpTopic(this, "create-new-viewport.htm");
}
public static void DisplayHelpTopic(Control parent, string topic)
{
    try
    {
        // Use an empty form as the parent so that the help file will not block the CAD software
        Form mHelpParent = new Form();

        // Use location of this DLL file
        System.Reflection.Module mod = parent.GetType().Module;
        string path = Path.GetDirectoryName(mod.FullyQualifiedName);

        Help.ShowHelp(mHelpParent,
            Path.Combine(path, "cut-tools-help.chm"), HelpNavigator.Topic, topic);
    }
    catch (System.Exception ex)
    {
        _AcAp.Application.ShowAlertDialog(
                            string.Format("\nError: {0}\nStackTrace: {1}", ex.Message, ex.StackTrace));
    }
}

表格在 AutoCAD、BricsCAD 或 ZWCAD 中显示。关于很好,很棒。但是如果我想简单地显示 CHM 文件本身(因此没有可用的实际表格)我必须这样做:

[CommandMethod("TS_DisplayHelp")]
public void TS_DisplayHelp()
{
    // Use location of this DLL file
    System.Reflection.Module mod = GetType().Module;
    System.Diagnostics.Process.Start(
        Path.Combine(Path.GetDirectoryName(mod.FullyQualifiedName), "cut-tools-help.chm"));
}

它有效,但有一个缺点。它生成了一个新的帮助实例,并且不使用相同的实例。

例如:

考虑到 TS_DISPLAYHELP 的上下文,我不知道如何直接使用 Help.ShowHelp,因为我可以在我的按钮点击处理程序中使用。

目前,我已经设法通过直接在命令 TS_DISPLAYHELP 方法中复制 DisplayHelpTopic 代码来解决这个问题:

[CommandMethod("TS_DisplayHelp")]
public void TS_DisplayHelp()
{
    try
    {
        // Use an empty form as the parent so that the help file will not block the CAD software
        Form mHelpParent = new Form();

        // Use location of this DLL file
        System.Reflection.Module mod = GetType().Module;
        string path = Path.GetDirectoryName(mod.FullyQualifiedName);

        Help.ShowHelp(mHelpParent,
            Path.Combine(path, "cut-tools-help.chm"), HelpNavigator.Topic, "command-index.htm");
    }
    catch (System.Exception ex)
    {
        _AcAp.Application.ShowAlertDialog(
                            string.Format("\nError: {0}\nStackTrace: {1}", ex.Message, ex.StackTrace));
    }
}

我知道我的默认主题是 "command-index.htm"


我对上述决议很满意。