在C#中使用.chm帮助文件

将编译好的.chm帮助文件(可以用EasyCHM进行制作,下载地址:http://download.csdn.net/detail/xiaoyaofriend/4501571)添加到C# 编写的程序中时,需要调用Help类的ShowHelp和ShowHelpIndex静态方法。下面对这两个方法进行详细介绍。
(1)ShowHelp方法。显示帮助文件的内容。该方法有4种重载形式,它们的语法形式分别如下。
语法1:
public static void ShowHelp (Control parent,string url)
参数说明如下。
parent:标识“帮助”对话框的父级的Control。
url:帮助文件的路径和名称。
返回值:显示指定URL处的帮助文件内容。
语法2:
public static void ShowHelp (Control parent,string url,HelpNavigatornavigator)
参数说明如下。
parent:标识“帮助”对话框的父级的Control。
url:帮助文件的路径和名称。
navigator:HelpNavigator值之一。HelpNavigator值及说明如表1所示。

表1      HelpNavigator值及说明
语法3:
public static void ShowHelp (Controlparent,string url,string keyword)
参数说明如下。
parent:标识“帮助”对话框的父级的Control。
url:帮助文件的路径和名称。
keyword:要为其显示帮助信息的关键字。
返回值:显示在指定URL处找到的有关特定关键字的帮助文件内容。
语法4:
public static void ShowHelp (Control parent,string url,HelpNavigatorcommand,Object parameter)
参数说明如下。
parent:标识“帮助”对话框的父级的Control。
url:帮助文件的路径和名称。
command:HelpNavigator值之一。 HelpNavigator值及说明如表4所示。
Parameter:任意类型的参数。
返回值:显示位于用户提供的URL处的帮助文件内容。
(2)ShowHelpIndex方法。显示指定帮助文件的索引。
语法:
public static void ShowHelpIndex (Control parent,string url)
示例
在Windows应用程序中调用.chm帮助文件
本示例实现的是,当程序运行时,单击【help】按钮,在程序中调用.chm帮助文件。
程序主要代码。
private void bnthelp_Click(object sender, EventArgs e)
{
string helpfile = Application.StartupPath.Substring(0,Application.StartupPath.Substring(0,Application.Startup Path.LastIndexOf("\\")).LastIndexOf("\\"));
helpfile+=@"\help\mrHelp.chm";
Help.ShowHelp(this,   helpfile);
Help.ShowHelpIndex(this,   helpfile); //显示指定帮助的索引
}
完整程序代码如下:
★   ★★★★Form1.cs窗体代码文件完整程序代码★★★★★
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace _5_02
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void bnthelp_Click(object sender, EventArgs e)
{
string helpfile = Application.StartupPath.Substring(0,Application.StartupPath.Substring(0,Application.StartupPath.LastIndexOf("\\")).LastIndexOf("\\"));
helpfile+=@"\help\mrHelp.chm";
Help.ShowHelp(this,   helpfile);
Help.ShowHelpIndex(this,   helpfile); //显示指定帮助的索引
}
private void button1_Click(object sender, EventArgs e)
{
}
}
}
★   ★★★★Form1.Designer.cs窗体代码文件完整程序代码★★★★★
namespace _5_02
{
partial class Form1
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.bnthelp = new System.Windows.Forms.Button();

this.helpProvider1 = new System.Windows.Forms.HelpProvider();
this.SuspendLayout();
//
// bnthelp
//
this.bnthelp.Location = new System.Drawing.Point(91, 34);
this.bnthelp.Name = "bnthelp";
this.bnthelp.Size = new System.Drawing.Size(70, 23);
this.bnthelp.TabIndex = 0;
this.bnthelp.Text = "help";
this.bnthelp.UseVisualStyleBackColor = true;
this.bnthelp.Click += new System.EventHandler(this.bnthelp_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 99);
this.Controls.Add(this.bnthelp);
this.Name = "Form1";
this.Text = "帮助引用";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button bnthelp;
private System.Windows.Forms.HelpProvider helpProvider1;
}
}
★   ★★★★Program.cs主程序文件完整程序代码★★★★★
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace _5_02
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}

}

(3)通过进程Process去调用。

For example: 

System.Diagnostics.Process p = new System.Diagnostics.Process(); 

p.StartInfo.FileName = "helpfile.chm"; 

p.Start();

在Web中好像还没有比较好的查看chm的方法。

(4)HelpProvider控件

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

具体步骤如下:

A帮助按钮不能与最大化和最小化按钮同时存在。

设置窗体属性:

MaximizeBox=false;
MinimizeBox=false;

HelpButton=true;


B添加控件helpProvider

该控件可以带有帮助文件,chm


C将helpProvider控件和窗体联系起来

设置窗体属性:(别的控件也一样)

HelpKeyword on helpProvider 索引和帮助文件中的索引对应

HelpNavigator on helpP


D给控件helpProvider加载帮助文件

public Form1()
 {
      InitializeComponent();
      string strpath = Application.StartupPath.Substring(0, Application.StartupPath.Substring(0, Application.StartupPath.LastIndexOf("\\")).LastIndexOf("\\"));
      strpath += @"\mrHelp.chm";
      helpProvider1.HelpNamespace = strpath;
}


E实现点击?帮助按钮实现F1的功能

在帮助按钮的点击事件中

private void Form1_HelpButtonClicked(object sender, CancelEventArgs e)
 {

         SendKeys.Send("{F1}");
        //SendKeys.SendWait("{F1}");
 }

使用代码实现:
TestHelpProvider:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace TestHelpProvider
{
    public partial class Form1 : Form
    {
        public Form1()
       {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
           //将帮助信息的文本字符串关联到控件上,在相应控件上按下F1键时显示
            helpProvider1.SetHelpString(textBox1, "Enter an age that is less than 65.");
            helpProvider1.SetHelpString(textBox2, "Enter a 5 digit post code.");
        }
   }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
目录 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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值