1. 程式人生 > >在C#中使用.chm幫助檔案

在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("\\"));
[email protected]
"\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("\\"));
[email protected]
"\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."); } } }

相關推薦

C#使用.chm幫助檔案

將編譯好的.chm幫助檔案(可以用EasyCHM進行製作,下載地址:http://download.csdn.net/detail/xiaoyaofriend/4501571)新增到C# 編寫的程式中時,需要呼叫Help類的ShowHelp和ShowHelpIndex靜態

在 VC 使用 HTMLHELP (.chm) 幫助檔案

  在我用VC呼叫了HTML Help之後,才發現用VC呼叫HTML Help並不是一件簡單的事。   在Visual C++ 6中呼叫HTML Help沒有現成的函式,需要呼叫HtmlHelp()這個API函式。而在呼叫這個函式之前,還需要在你的工程中加上HtmlHelp的

淺析C++的開啟檔案、儲存檔案(OPENFILENAME)

首先看看msdn上如何描述的: Contains information that the GetOpenFileName and GetSaveFileName functions use to initialize an Open or Save As dialog box

C#讀取EXCEL檔案的第二種方法

using NPOI.HSSF.UserModel; using System; using System.IO; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; namespace ReadExcel { class Program

網上下載的CHM幫助檔案打不開的解決辦法。

我的機器 裝的是 Windows server 2008 作業系統。他的安全性比較高。 我在網上下載了一個 CHM 幫助文件。結果打不開。 現象:     開啟時 ,提示 安全警告, 提示:來自Internet的檔案可能對您有所幫助,但此檔案型別可能威海您的計算機。如果

C++判斷一個檔案是否存在的方法

最進在寫的一個系統需要儲存結果資料,但是儲存結果資料的時候,如果那個資料已經存在,就會無法儲存,所以就需要先判斷是否存在該資料,判斷方法如下: #include<iostream> #include<fstream> using namespace

檔案是資料(位元組)流的抽象-為什麼C++會把檔案操作抽象為fstream?

這不過是返祖罷了。正確的問題是為什麼會把資料流抽象成檔案。   裝置-位元組流-檔案。 一切皆為檔案,所有不同種類的型別都被抽象成檔案(比如:塊裝置,socket套接字,pipe佇列)。   檔案抽象為資料流一定程度上是 Unix 造成的。 傳統上,計算機上用

關於C++如何判斷檔案、目錄存在的若干方法

在我們平時的程式設計中,經常需要判斷檔案或者目錄是否存在,相對來說判斷檔案存在比較簡單,判斷目錄存在則比較複雜。 下面就詳細的介紹幾種方法。 首先,關於判斷檔案存在的方法: 一、ifstream輸入流 在C++中,可以利用ifstream檔案輸入流,當我們直接使

C#對RESX檔案的操作

1:從.resources檔案轉到resx檔案 使用Resgen.exe程式進行轉換,該程式位於VS的目錄下 resgen myResources.resources myResources.resx 2:在專案中使用已有的RESX檔案 將該檔案包括進專案,並在其屬

C++匯入tlb檔案

//.h檔案 #pragma warning(disable:4146) #improt "../../bin/msado60_Backcompat_i386.tlb" named_guids rename("EOF", "adoEOF"), rename("EOF", "

C#讀取pdm檔案資訊(PowerDesigner讀取方法)

其實PowerDesigner的pdm檔案是一個xml檔案來的,我們可以當作讀取xml檔案一樣的方式來讀pdm檔案。 其中,我們需要注意的是:如果我們不使用名稱空間管理器的話,系統會提示如下錯誤: 需要名稱空間管理器或 XsltContext。此查詢具有字首、變數或使用者定義的函式。  說明: 執行當前

c++的idl檔案

最近研究的需要,在研究一些原始碼。原始碼是用C++寫的,遇到一種idl檔案。下面寫寫idl檔案的相關內容:  InterfaceDescription(orDefinition)Language,即介面描述語言,是用來描述元件介面的一種規約語言。它實現了介面描述對於程式語言

Objective-C讀取Plist檔案資料

開發環境: Xcode 9.2 開發語言:ObjectiveC第一步:建立一個工程,然後新建一個Property List檔案.第二步: 編碼如下:#import "ViewController.h"@interfaceViewController ()@end@implem

C++讀寫檔案過程異常處理機制

        在利用C++進行檔案讀取與寫入過程中,無論是針對二進位制檔案還是文字檔案均需要進行異常處理,在C++中我們可以利用CFile進行檔案的讀寫,而在MFC中還可以利用CStdioFile進行檔案的讀寫。         利用CFile進行讀文字檔案過程中的異常處

C++一個頭檔案可以對應多個原始檔

// one *.h file can correspond two or more *.cpp files // or a class definition can distribute in more than one *.cpp files // par

C++如何更改檔案屬性

       今天上班,偶然發現一個BUG,在儲存工程檔案時候,如果檔案的屬性為Read_Only,則會引起系統崩潰。已開始我也不清楚原因。後來一堆斷點進去排查,發現了錯誤。如果有給我類似的問題的可以參考我的方法。        使用SetFileAttribute()函式可

c++txt檔案的讀取以及在MFC讀取txt座標資料並完成圖形繪製

主要介紹如何讀取txt檔案中的座標資料,並在MFC視窗中繪製出來,工程建立方法和繪圖方法與上一篇博文基本一致,這裡就不再詳贅述,可參考上一篇博文vs2010、MFC視窗中繪製點、線、面。 C++中讀取檔案的方法有兩種,一種是來自於C語言的“檔案指標”方法,另一種是C++中的“檔案流”思想。

C#封裝的dll檔案在Labview呼叫

  操作步驟 1.開啟vi的後面板,右鍵單擊選擇“Connectivity”------“.NET”--------"ConstructorNode"此時會彈出窗。選擇所需dll檔案             &nb

C#讀寫INI檔案的方法例子

[DllImport(“kernel32”)] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); [DllImp

C/C++生成的exe檔案如何傳引數到main

Main函式引數argc,argv說明:   C/C++語言中的main函式,經常帶有引數argc,argv,如下:    int main(int argc, char** argv) int main(int argc, char