如何通过C#调用CHM帮助文件

 1. 首先这篇文章是比较详细的一个介绍:

Open Help file on F1 function key press in windows
application


This article explains how to open help file on F1 Function key press in
windows application.


Almost all applications need Help file. It could be .chm , .PPT, . HTML, .PDF
or any other kind of file which you want to open on F1 key press. Lets see how
can we do that.


.NET Framework provides F1helpProvider component to handle
F1 key press. You can use this component to show help file (.chm, .PPT, .PDF
etc.,) to the user. The developer need not have to write even a single line of
C# or Vb.Net code to display help file on press of F1 function key from
keyboard.


You can find the helpProvider component under Component tab of ToolBox in
Visual Studio. Below is the pic which will guide you to find
Helpprovider component.




Now Just drag helpProvider into your application. Then go to the property of
HelpProvider and Set its "HelpNamespace" property to your
desired help file path. Below is the picture which will guide you to do
that.




Once you set the property, then compile and run your sample
application.


Now click F1 Button from your keyboard when the focus is on your application
and you will see your help file opened.


You can also set the different property of helpProvider componet (Which you
have added in the main form) from the MainForm property window, for eg., set the
TOC when user clicks on the F1 key. You can also set the property to show window
help button etc.,



Now we will see how to display help topic in a .chm file by keyword on a
Button Click


Step 1 -> Click Button1 and display its properties.
Step 2 ->Set the
HelpKeywordonHelpProvider1 property to "Your .CHM Topic".

Step 3 -> Set the HelpNavigatoronHelpProvider1 property
to "KeywordIndex".
Step 4 -> Compile and run your application


If you want to set using Code you can do like this

helpProvider1.HelpNamespace =

"C:/helpFile.chm";

HelpNavigator.KeywordIndex); //Set the Keyword

helpProvider1.SetHelpKeyword(Button1,

"Your .CHM Topic"); // Topic in help file.

helpProvider1.SetHelpNavigator(Button1,



Hope this will help all who wants to integrate F1 key press to open help
file in windows application.


2. 这里主要用到HelpProvider类,它用于提供控件的弹出或联机帮助。


每个 HelpProvider 实例均维护一个对关联控件的引用的集合。若要使帮助文件与
HelpProvider 关联,请设置 HelpNamespace 属性。通过调用 SetHelpNavigator 方法并提供指定控件的 HelpNavigator 值来指定提供的帮助类型。通过调用 SetHelpKeyword
方法为帮助提供关键字或主题。若要打开特定主题的帮助,则应以 topicName.htm 的形式传入关键字。


若要使特定的帮助字符串与控件关联,请使用 SetHelpString 方法。如果用户在控件包含焦点时按下 F1
键,使用此方法与控件关联的字符串将显示在弹出窗口中。


如果尚未设置 HelpNamespace 属性,则必须使用 SetHelpString
方法提供帮助文本。如果同时设置了 HelpNamespace 和帮助字符串,则基于
HelpNamespace 的帮助信息优先。


HelpProviderHelp 类上调用方法来提供帮助功能。


HelpProvider控件可以挂起控件,显示帮助主题。
1.SetShowHelp()方法:设置指定控件是否显示帮助信息;
2.HelpNamespace()方法:设置帮助文件;
3.SetHelpKeyword()方法:为帮助文件设置关键字;
4.SetHelpNavigator()方法:设置显示帮助中的元素;
5.SetHelpString()方法:将帮助信息的文本字符串关联到控件上。



TestHelpProvider:






  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.ComponentModel;   
  4. using System.Data;   
  5. using System.Drawing;   
  6. using System.Text;   
  7. using System.Windows.Forms;   
  8.   
  9. namespace TestHelpProvider   
  10. {   
  11.     public partial class Form1 : Form   
  12.      {   
  13.         public Form1()   
  14.          {   
  15.              InitializeComponent();   
  16.          }   
  17.   
  18.         private void
    Form1_Load(object sender, EventArgs e)   
  19.          {   
  20.             //将帮助信息的文本字符串关联到控件上,在相应控件上按下F1键时显示   

  21.              helpProvider1.SetHelpString(textBox1, "Enter an age that is less than 65.");   
  22.              helpProvider1.SetHelpString(textBox2, "Enter
    a 5 digit post code."
    );   
  23.          }   
  24.      }   
  25. }  


3. 介绍了菜单项显示帮助文档:



The HelpProvider control is used to
show how to link to specific keyword in a .chm help file.


private void mnuContentsHelp_Click(object sender, System.EventArgs
e)
{
        // Show the contents of the help file.
       
Help.ShowHelp(this, hpAdvancedCHM.HelpNamespace);
    }

    private
void mnuIndexHelp_Click(object sender, System.EventArgs e)
{
        //
Show index of the help file.
        Help.ShowHelpIndex(this,
hpAdvancedCHM.HelpNamespace);
    }

    private void
mnuSearchHelp_Click(object sender, System.EventArgs e)
{
        // Show
the search tab of the help file.
        Help.ShowHelp(this,
hpAdvancedCHM.HelpNamespace, HelpNavigator.Find, "");
    }



4. 一个邮件介绍:


If
you use F1HelpProvider control. When you press F1 on the active control It will
shows a pop up with Text which you have set already. Follow the Steps Below:


1. Select the F1HelpProvider control from ToolBox and Drag it to your
Windows Form.
2. Set the following code in the Page Load event of your Form.


helpProvider1.SetHelpString(txtPinCode, "Please Enter Ur city pin
Code.");

In the above code txtPinCode is a TextBox.
3. Then run your
application by pressing F5.
4. If you have focus on the Text Box Pin Code
then press F1. It will shows a Message that you have set likely to be
ToolTip.





5.一个最好的例子,看了就明白。


Donwload example project
C# 2005 Express from:
http://www.help-info.de/download/CSharp_CHM.zip
The CHM file resides in
the DEBUG
folder and you have to do following before giving that a try:
to open the CHM
file right-click the saved file, click
Properties, and then click Unblock.


(他说需要对CHM文件做这样的操作,我试了,可以直接F1打开,你们要是有问题就按照步骤)。



下面是代码:


        private void Form1_Load(object sender, EventArgs
e)
        {
            // set F1 help topic for this form
           
helpProvider1.HelpNamespace = Application.StartupPath + @"\" +
sHTMLHelpFileName;
            helpProvider1.SetHelpNavigator(this,
HelpNavigator.Topic);
            helpProvider1.SetHelpKeyword(this,
@"/Garden/garden.htm");
           
helpProvider1.SetHelpNavigator(this.btnStart,
HelpNavigator.Topic);
            helpProvider1.SetHelpKeyword(this.btnStart,
@"/Garden/flowers.htm");
           
helpProvider1.SetHelpNavigator(this.btnExit,
HelpNavigator.Topic);
            helpProvider1.SetHelpKeyword(this.btnExit,
@"/Garden/tree.htm");
           
helpProvider1.SetHelpNavigator(this.chkMain,
HelpNavigator.Topic);
            helpProvider1.SetHelpKeyword(this.chkMain,
@"/HTMLHelp_Examples/jump_to_anchor.htm#AnchorSample");
      
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 1. 介绍... 1 1.1 Hello, world. 1 1.2 类型 2 1.2.1 预定义类型... 3 1.2.2 转换... 5 1.2.3 数组类型... 6 1.2.4 类型系统一致... 7 1.3 变量和参数... 8 1.4 自动内存管理... 11 1.5 表达式... 13 1.6 声明 14 1.7 类... 17 1.7.1 常数... 19 1.7.2 域... 19 1.7.3 方法... 20 1.7.4 属性... 21 1.7.5 事件... 22 1.7.6 操作符... 23 1.7.7 索引... 24 1.7.8 实例构造函数... 25 1.7.9 析构函数... 26 1.7.10 静态构造函数... 26 1.7.11 继承... 27 1.8 结构 28 1.9 接口 29 1.10 代表... 30 1.11 联合... 31 1.12 名称空间和集合... 31 1.13 版本... 33 1.14 特征... 35 2. 语法结构... 37 2.1 翻译的阶段... 37 2.2 文法符号... 37 2.3 预处理... 38 2.3.1 预处理声明... 38 2.3.2 #if, #elif, #else, #endif 39 2.3.3 预处理控制行... 40 2.3.4 #line. 41 2.3.5 预处理标识符... 41 2.3.6 预处理表达式... 41 2.3.7 与空白交互作用... 42 2.4 语法分析... 43 2.4.1 输入... 43 2.4.2 输入字符... 43 2.4.3 行结束符... 43 2.4.4 注释... 43 2.4.5 空白... 44 2.4.6 标记... 45 2.5 句法分析... 45 2.5.1 标识符... 45 2.5.2 关键字... 46 2.5.3 数据符号... 46 2.5.4 操作符和标点... 51 2.5.5 Unicode 字符转意字符序列... 51 3. 基本概念... 53 3.1 声明 53 3.2 成员 55 3.2.1 名称空间成员... 55 3.2.2 结构成员... 55 3.2.3 枚举成员... 55 3.2.4 类成员... 56 3.2.5 接口成员... 56 3.2.6 数组成员... 56 3.2.7 代表成员... 56 3.3 成员访问... 56 3.3.1 声明可访问性... 56 3.3.2 可访问性域... 57 3.3.3 保护的访问... 59 3.3.4 可访问性约束... 60 3.4 签名和重载... 60 3.5 范围 61 3.5.1 名称隐藏... 63 3.6 名称空间或类型名称... 65 3.6.1 合格的名称... 66 4. 类型... 67 4.1 数值类型... 67 4.1.1 默认构造函数... 68 4.1.2 结构类型... 69 4.1.3 简单类型... 69 4.1.4 整数类型... 70 4.1.5 浮点类型... 71 4.1.6 十进制类型... 72 4.1.7 布尔类型.. 72 4.1.8 枚举类型... 72 4.2 引用类型... 72 4.2.1 类类型... 73 4.2.2 对象类型... 73 4.2.3 字符串类型... 73 4.2.4 接口类型... 74 4.2.5 数组类型... 74 4.2.6 代表类型... 74 4.3 包装和解包... 74 4.3.1 包装转换... 74 4.3.2 解包转换... 75 5. 变量... 77 5.1 变量类型.. 77 5.1.1 静态变量.. 77 5.1.2 实例变量... 77 5.1.3 数组元素... 78 5.1.4 数值参数... 78 5.1.5 引用参数... 78 5.1.6 输出参数... 78 5.1.7 局部变量... 79 5.2 默认值... 79 5.3 明确赋值... 79 5.3.1 初始赋值变量... 81 5.3.2 非初始赋值变量... 82 5.4 变量引用... 82 6. 转换... 83 6.1 隐式转换... 83 6.1.1 同一性转换... 83 6.1.2 隐式数值转换... 83 6.1.3 隐式枚举转换... 84 6.1.4 隐式引用转换... 84 6.1.5 转换... 84 6.1.6 隐式常数表达式转换... 84 6.1.7 用户自定义隐式转换... 85 6.2 显式转换... 85 6.2.1 显式数值转换... 85 6.2.2 显式枚举类型转换... 86 6.2.3 显式引用类型转换... 86 6.2.4 解包转换... 87 6.2.5 用户自定义显式转换... 87 6.3 标准转换... 87 6.3.1 标准隐式转换... 87 6.3.2 标准显式转换... 88 6.4 用户定义转换... 88 6.4.1 允许的用户自定义转换... 88 6.4.2 用户自定义转换的取值... 88 6.4.3 用户自定义隐式转换... 89 6.4.4 用户自定义显式类型转换... 89 7. 表达式... 91 7.1 表达式分类... 91 7.1.1 表达式的数值... 92 7.2 操作符... 92 7.2.1 操作符优先级和结合顺序... 92 7.2.2 操作符重载... 93 7.2.3 一元操作符重载分析... 94 7.2.4 二元操作符重载分析... 94 7.2.5 候选用户定义操作符... 95 7.2.6 数字升级... 95 7.3 成员查询... 96 7.3.1 基类型... 97 7.4 函数成员... 97 7.4.1 参数列表... 99 7.4.2 重载分析... 100 7.4.3 功能成员调用... 102 7.4.4 虚拟函数成员查找... 103 7.4.5 接口函数成员查找... 103 7.5 主要的表达式... 103 7.5.1 文字... 103 7.5.2 简单名称... 104 7.5.3 加括号的表达式... 105 7.5.4 成员访问... 105 7.5.5 调用表达式... 107 7.5.6 元素访问... 109 7.5.7 This访问... 110 7.5.8 基本访问... 111 7.5.9 递增和递减后缀操作符... 111 7.5.10 new操作符... 112 7.5.11 typeof操作符.. 116 7.5.12 sizeof操作符... 116 7.5.13 checked和unchecked操作符.. 117 7.6 一元表达式... 119 7.6.1 一元正值运算符... 119 7.6.2 一元负值运算符... 119 7.6.3 逻辑非运算符... 120 7.6.4 按位求补运算符... 120 7.6.5 间接运算符... 120 7.6.6 地址运算符... 120 7.6.7 前缀增量和减量运算符... 120 7.6.8 强制类型转换表达式... 121 7.7 算术运算符... 122 7.7.1 乘法运算符... 122 7.7.2 除法运算符... 123 7.7.3 余数运算符... 124 7.7.4 加法运算符... 124 7.7.5 减法运算符... 126 7.8 移位运算符... 127 7.9 关系运算符... 128 7.9.1 整数比较运算符... 129 7.9.2 浮点比较运算符... 129 7.9.3 小数比较运算符... 130 7.9.4 布尔相等运算符... 130 7.9.5 枚举比较运算符... 130 7.9.6 引用类型相等运算符... 130 7.9.7 字符串相等运算符... 132 7.9.8 代表相等运算符... 132 7.9.9 is 运算符... 132 7.10 逻辑运算符... 133 7.10.1 整数逻辑运算符... 133 7.10.2 枚举逻辑运算符... 133 7.10.3 布尔逻辑运算符... 134 7.11 条件逻辑运算符... 134 7.11.1 布尔条件逻辑运算符... 134 7.11.2 用户自定义的条件逻辑运算符... 135 7.12 条件运算符... 135 7.13 赋值运算符... 136 7.13.1 简单赋值... 136 7.13.2 组合赋值... 138 7.13.3 事件赋值... 139 7.14 表达式... 139 7.15 常量表达式... 139 7.16 布尔表达式... 140 8. 语句... 141 8.1 终点与可达性... 141 8.2 块 142 8.2.1 语句列表... 143 8.3 空语句... 143 8.4 标号语句... 144 8.5 声明语句... 144 8.5.1 局部变量声明... 144 8.5.2 局部常量声明... 145 8.6 表达式语句... 145 8.7 选择语句... 146 8.7.1 if语句... 146 8.7.2 Switch 语句... 147 8.8 重复语句... 150 8.8.1 while语句... 151 8.8.2 do语句... 151 8.8.3 for语句... 151 8.8.4 foreach语句... 153 8.9 跳转语句... 154 8.9.1 break语句... 154 8.9.2 continue语句... 155 8.9.3 goto语句... 155 8.9.4 return语句... 156 8.9.5 throw语句... 156 8.10 try语句... 157 8.11 checked和unchecked语句... 159 8.12 lock语句... 159 9. 名称空间... 161 9.1 编译单元... 161 9.2 名称空间声明... 161 9.3 使用指示... 162 9.3.1 使用别名指示... 163 9.3.2 使用名称空间指示... 165 9.4 名称空间成员... 166 9.5 类型声明... 167 10. 类 169 10.1 类声明... 169 10.1.1 类修饰符... 169 10.1.2 类基础规范... 170 10.1.3 类主体... 172 10.2 类成员... 172 10.2.1 继承... 173 10.2.2 new修饰符... 173 10.2.3 访问修饰符... 174 10.2.4 要素类型... 174 10.2.5 静态和实例成员... 174 10.2.6 嵌套类型... 175 10.3 常数... 175 10.4 域 176 10.4.1 静态和实例域... 177 10.4.2 只读域... 178 10.4.3 域的初始化... 179 10.4.4 变量初始化函数... 179 10.5 方法... 181 10.5.1 方法参数... 182 10.5.2 静态和实例方法... 185 10.5.3 虚拟方法... 186 10.5.4 覆盖方法... 187 10.5.5 抽象方法... 189 10.5.6 外部方法... 190 10.5.7 方法主体... 191 10.5.8 方法重载... 191 10.6 属性... 191 10.6.1 静态属性... 192 10.6.2 虚拟属性... 192 10.6.3 覆盖属性... 193 10.6.4 抽象属性... 194 10.6.5 访问符... 194 10.7 事件... 199 10.8 索引... 202 10.8.1 索引重载... 205 10.8.2 虚拟索引... 205 10.8.3 覆盖索引... 205 10.8.4 抽象索引... 206 10.9 操作符... 206 10.9.1 一元操作符... 207 10.9.2 二元操作符... 207 10.9.3 转换操作符... 208 10.10 实例构造函数... 209 10.10.1 构造函数初始化函数... 210 10.10.2 实例变量初始化函数... 210 10.10.3 构造函数执行... 210 10.10.4 默认构造函数... 212 10.10.5 私有构造函数... 213 10.10.6 可选的构造函数参数... 213 10.11 析构函数... 213 10.12 静态构造函数... 214 10.12.1 类加载和初始化... 215 11. 结构... 217 11.1 结构声明... 217 11.1.1 结构修饰符... 217 11.1.2 接口... 217 11.1.3 结构体... 217 11.2 结构成员... 217 11.3 结构例子... 217 11.3.1 数据库整数类型... 217 11.3.2 数据库布尔类型... 219 12. 数组... 221 12.1 数组类型... 221 12.1.1 System.Array 类型... 222 12.2 数组创建... 222 12.3 数组元素访问... 222 12.4 数组成员... 222 12.5 数组协方差... 222 12.6 数组初始化函数... 223 13. 接口... 225 13.1 接口声明... 225 13.1.1 接口修饰符... 225 13.1.2 基本接口... 225 13.1.3 接口主体... 226 13.2 接口成员... 226 13.2.1 接口方法... 227 13.2.2 接口属性... 227 13.2.3 接口事件... 228 13.2.4 接口索引... 228 13.2.5 接口成员访问... 228 13.3 完全有效的接口成员名称... 230 13.4 接口实现... 230 13.4.1 显式接口成员实现程序... 231 13.4.2 接口映射... 233 13.4.3 接口实现程序继承... 235 13.4.4 接口重新实现程序... 236 13.4.5 抽象类和接口... 238 14. 枚举... 239 14.1 枚举声明... 239 14.2 枚举成员... 240 14.3 枚举数值和操作... 242 15. 代表... 243 15.1 代表声明... 243 15.1.1 可合并的代表类型... 244 15.2 代表实例化... 244 15.3 多点传送代表... 244 15.4 代表调用... 244 16. 异常... 245 16.1 异常的产生... 245 16.2 System.Exception 类... 245 16.3 异常怎样被处理... 245 16.4 通用异常类... 246 17. 属性... 247 17.1 属性类... 247 17.1.1 AttributeUsage 属性... 247 17.1.2 位置的和名称的参数... 248 17.1.3 属性参数类型... 248 17.2 规范... 249 17.3 属性实例... 251 17.3.1 一个属性的编译... 251 17.3.2 一个属性实例的运行时检索... 252 17.4 保留的属性... 252 17.4.1 AttributeUsage 属性... 252 17.4.2 条件属性... 253 17.4.3 废弃的属性... 255 18. 危险代码... 257 18.1 危险代码... 257 18.2 指针类型... 257 19. 互用性... 259 19.1 COMImport 属性... 259 19.2 COMRegisterFunction 属性... 259 19.3 COMSourceInterfaces 属性... 260 19.4 COMVisible 属性... 260 19.5 DispId 属性... 260 19.6 DllImport 属性... 260 19.7 FieldOffset 属性... 261 19.8 GlobalObject 属性... 261 19.9 Guid 属性... 262 19.10 HasDefaultInterface 属性... 262 19.11 ImportedFromTypeLib 属性... 262 19.12 In 和 Out 属性... 262 19.13 InterfaceType 属性... 263 19.14 MarshalAs 属性... 263 19.15 NoIDispatch 属性... 264 19.16 NonSerialized 属性... 264 19.17 Predeclared 属性... 264 19.18 PreserveSig 属性... 264 19.19 Serializable 属性... 265 19.20 StructLayout 属性... 265 19.21 TypeLibFunc 属性... 265 19.22 TypeLibType 属性... 265 19.23 TypeLibVar 属性... 266 19.24 支持的枚举... 266 20. 参考... 269

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值