这是在我的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"));
}它能工作,但有一个缺点。它生成帮助的新实例,并且不使用相同的实例。
例如:
,
Help.ShowHelp,可以通过TS_DISPLAYHELP命令并启动帮助,并启动新实例。考虑到TS_DISPLAYHELP的上下文,我无法像在按钮单击处理程序中那样直接使用Help.ShowHelp。
发布于 2021-09-29 07:18:23
目前,我已经通过直接在命令DisplayHelpTopic方法中复制TS_DISPLAYHELP代码来解决这个问题:
[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"。
我对上述决议感到满意。
https://stackoverflow.com/questions/69370510
复制相似问题