首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以修改Help.ShowHelp API以简单地调用CHM文件吗?

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

Stack Overflow用户
提问于 2021-09-29 04:42:02
回答 1查看 40关注 0票数 0

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

  • Handler:

代码语言:javascript
复制
private void buttonHelp_Click(object sender, EventArgs e)
{
    CutTools.DisplayHelpTopic(this, "create-new-viewport.htm");
}

  • Base方法:

代码语言:javascript
复制
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文件本身(因此没有实际的表单可用),我必须这样做:

代码语言:javascript
复制
[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"));
}

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

例如:

  • 启动其他命令之一,并通过单击按钮显示帮助。您可以取消。

  • ,启动一个不同的命令并通过单击按钮显示帮助。instance.
  • You使用相同的Help.ShowHelp,可以通过TS_DISPLAYHELP命令并启动帮助,并启动新实例。

考虑到TS_DISPLAYHELP的上下文,我无法像在按钮单击处理程序中那样直接使用Help.ShowHelp

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-29 07:18:23

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

代码语言:javascript
复制
[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"

我对上述决议感到满意。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69370510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档