在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("\\"));
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("\\"));
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.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