サーチ…


備考

さまざまな方法でWindowsフォームアプリケーションのフォームとコントロールのヘルプを提供することができます。ポップアップヘルプを表示したり、CHMファイルまたはURLを開くことができます。フォーム、コントロール、ダイアログに状況依存のヘルプを表示することができます。

HelpProviderコンポーネント

HelpProviderコンポーネントをセットアップして、コンポーネントに対する状況依存ヘルプを提供することができます。 F1キーまたはフォームのヘルプボタンを押すと、次のように自動的に実行されます。

  • コントロールのコンテキストヘルプのポップアップを表示する
  • コンテキストに基づいたCHMファイルを開く(目次を表示する、キーワードまたはインデックスを表示する、トピックを表示する)
  • デフォルトブラウザを使用してURLに移動する

ヘルプクラス

コードでHelpクラスを使用して、次のようなHelpを提供できます。

  • コントロールのヘルプポップアップを表示する
  • コンテキストに基づいたCHMファイルを開く(目次を表示する、キーワードまたはインデックスを表示する、トピックを表示する)
  • デフォルトブラウザを使用してURLに移動する

HelpRequestedイベント

ユーザーがF1キーを押すかFormヘルプボタンをクリックすると、 ControlオブジェクトまたはForm HelpRequestedイベントを処理してカスタムアクションを実行できます。

フォームのヘルプボタン

タイトルバーに[ヘルプ]ボタンを表示するようにFormを設定できます。このようにして、ユーザーがヘルプボタンをクリックすると、カーソルは?変わり?任意の点をクリックすると、 HelpProviderを使用してコントロールに関連付けられた状況依存ヘルプが表示されます。

MessgeBoxとCommonDialogsのヘルプボタン

コンポーネントのヘルプボタンを使用して、 MessageBoxOpenFileDialogSaveDialog 、およびColorDialogヘルプを提供することができます。

ツールチップコンポーネント

ユーザーがコントロールをポイントすると、 ToolTipコンポーネントを使用してヘルプテキストを表示できToolTipToolTipは、任意のコントロールに関連付けることができます。

注意

HelpProviderHelpクラスの使用コンパイルされたヘルプファイル(.chm)またはHTMLファイルをHTMLヘルプ形式で表示できます。コンパイルされたヘルプファイルは、目次、索引、検索機能、およびページ内のキーワードリンクを提供します。ショートカットは、コンパイルされたヘルプファイルでのみ機能します。 HTMLヘルプワークショップを使用すると、HTMLヘルプ1.xファイルを生成できます。 HTMLヘルプの詳細については、 Microsoft HTMLヘルプの 「HTMLヘルプワークショップ」およびその他のHTMLヘルプトピックを参照してください。

ヘルプファイルを表示する

Help Classは、HTML Help 1.0エンジンをカプセル化します。ヘルプオブジェクトを使用して、コンパイル済みヘルプファイル(.chm)またはHTMLファイルをHTMLヘルプ形式で表示することができます。コンパイルされたヘルプファイルは、ページ内の目次、索引、検索、およびキーワードのリンクを提供します。ショートカットは、コンパイルされたヘルプファイルでのみ機能します。 HTML Help Workshopと呼ばれるMicrosftの無料ツールを使用して、HTMLヘルプ1.xファイルを生成することができます。

コンパイルされたヘルプファイルを2番目のウィンドウに表示する簡単な方法:

C#

Help.ShowHelp(this, helpProviderMain.HelpNamespace);

VB.NET

Help.ShowHelp(Me, hlpProviderMain.HelpNamespace)

MessageBoxのヘルプを表示する

メッセージボックスのヘルプは、さまざまな方法で提供できます。 Helpボタンを表示するようにMessageBoxを構成できます。また、ユーザーがヘルプボタンをクリックするか、 F1キーを押してヘルプを要求したときに、CHMファイルを表示したり、URLに移動したり、カスタムアクションを実行したりできるようにMessageBoxを構成できます。このトピックのいくつかの例を示します。

以下のすべての例では、 MessageBoxは次のようになります。

MessageBoxとヘルプボタン

CHMファイルを表示し、キーワード(索引)に移動します。

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
    "help.chm", HelpNavigator.KeywordIndex, "SomeKeyword");

CHMファイルを表示してトピックに移動する

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
    "help.chm", HelpNavigator.Topic, "/SomePath/SomePage.html");

CHMファイルを表示し、目次内の最初のヘルプページをナビゲートする

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
    "help.chm");

デフォルトブラウザを開き、URLにナビゲートする

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
    "http://example.com");

ヘルプボタンまたはF1キーを押したときにカスタムアクションを実行する

この場合、 MessageBoxのparentのHelpRequestedイベントを処理し、カスタム操作を実行する必要があります。

private void Form1_HelpRequested(object sender, HelpEventArgs hlpevent)
{
    // Perform custom action, for example show a custom help form
    var f = new Form();  
    f.ShowDialog();
}

次に、 MessageBox with Helpボタンを表示することができます。

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0, true);

または、ヘルプボタンを表示しないでください:

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0, false);

CommonDialogsのヘルプを表示する

OpenFileDialogSaveFileDialogColorDialogヘルプを提供することができます。これを行うには、ダイアログのShowHelpプロパティをtrue設定し、ダイアログのHelpRequestイベントを処理しtrue

void openFileDialog1_HelpRequest(object sender, EventArgs e)
{
    //Perform custom action
    Help.ShowHelp(this, "Http://example.com");
}

注意

  • ShowHelptrue設定した場合にのみイベントがShowHelptrue
  • このイベントは、[ Help ]ボタンをクリックするだけで発生し、F1キーでは発生しません。

下の画像には、[ヘルプ]ボタンがあるOpenFileDialogがあります。

ヘルプボタン付きのファイルダイアログを開く

コントロールとフォームのHelpRequestedイベントの処理

ユーザーがコントロール上でF1キーを押す 、フォーム( )のヘルプボタンをクリックしてコントロールをクリックすると、 HelpRequestedイベントが発生します。

このイベントを処理して、ユーザーがコントロールまたはフォームのヘルプを要求したときにカスタムアクションを提供できます。

HelpRequestedは、バブルアップメカニズムをサポートしています。あなたのアクティブコントロールに対して起動します。イベントを処理せず、そのイベントargのHandledプロパティをtrueに設定しないと、親コントロール階層までフォームが形成されます。

たとえば、次のようなフォームのHelpRequestedイベントを処理HelpRequested場合、 F1キーを押すとアクティブなコントロールの名前がメッセージボックスに表示されますが、 textBox1場合は別のメッセージが表示されます。

private void Form1_HelpRequested(object sender, HelpEventArgs hlpevent)
{
    var c = this.ActiveControl;
    if(c!=null)
        MessageBox.Show(c.Name);
}
private void textBox1_HelpRequested(object sender, HelpEventArgs hlpevent)
{
    hlpevent.Handled = true;
    MessageBox.Show("Help request handled and will not bubble up");
}

URLへのナビゲートやHelpクラスを使用したCHMファイルの表示など、他のカスタムアクションを実行できます。

ヘルプクラスを使用してヘルプを表示する

コードでHelpクラスを使用して、次のようなHelpを提供できます。

  • コントロールのヘルプポップアップを表示する
  • コンテキストに基づいたCHMファイルを開く(目次を表示する、キーワードまたはインデックスを表示する、トピックを表示する)
  • デフォルトブラウザを使用してURLに移動する

ヘルプを表示するポップアップウィンドウ

Help.ShowPopupを使用すると、ヘルプポップアップウィンドウを表示できます。

private void control_MouseClick(object sender, MouseEventArgs e)
{
    var c = (Control)sender;
    var help = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, " +
               "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
    if (c != null)
        Help.ShowPopup(c, "Lorem ipsum dolor sit amet.", c.PointToScreen(e.Location));
}

マウスポインタの位置にヘルプのポップアップが表示されます:

ここに画像の説明を入力

CHMヘルプファイルを表示する

Help.ShowHelpメソッドのさまざまなオーバーロードを使用してCHMファイルを表示し、キーワード、トピック、インデックスまたはコンテンツテーブルに移動できます。

ヘルプの目次を表示する

Help.ShowHelp(this, "Help.chm"); 

特定のキーワード(索引)のヘルプを表示する

Help.ShowHelp(this, "Help.chm", HelpNavigator.Index, "SomeKeyword");

特定のトピックのヘルプを表示する

Help.ShowHelp(this, "Help.chm", HelpNavigator.Topic, "/SomePath/SomePage.html");

URLを表示

ShowHelpメソッドを使用して、デフォルトのブラウザに任意のURLを表示できます。

Help.ShowHelp(this, "Http://example.com");

フォームのタイトルバーにヘルプボタンを表示する

Formタイトルバーにヘルプボタンを表示することができForm 。これを行うには、以下を行う必要があります。

  1. フォームのHelpButtonプロパティをtrue設定しtrue
  2. MinimizeBoxMaximizeBoxfalse設定しfalse

Formタイトルバーにヘルプボタンが表示されForm

ここに画像の説明を入力

また、ヘルプボタンをクリックすると、カーソルが?変わり?カーソル:

ここに画像の説明を入力

あなたはをクリックした場合、その後ControlFormHelpRequestedイベントが発生します、あなたが設定している場合もHelpProvider 、コントロールのヘルプを使用して表示されますHelpProvider

標準のフォームヘルプボタンのように機能するカスタムヘルプボタンを作成する

あなたが持っている場合はFormMinimizeBoxMaximizeBoxに設定しtrue 、あなたはのタイトルバー上の[ヘルプ]ボタンを表示することはできませんFormとカーソルがにコントロールをクリックできるように支援するために、それを変換するために、ヘルプボタンをクリックしの機能を失うことになりますヘルプを表示します。

MenuStripメニュー項目を標準のヘルプボタンのように動作させることができます。これを行うには、フォームにMenuStripを追加し、 ToolStripMenuItemを追加して、アイテムのClickイベントを処理Clickます。

private const int WM_SYSCOMMAND = 0x0112;
private const int SC_CONTEXTHELP = 0xF180;
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
private void helpToolStripMenuItem_Click(object sender, EventArgs e)
{
    SendMessage(this.Handle, WM_SYSCOMMAND, SC_CONTEXTHELP, 0);
}

注: Buttonを使用して操作する場合は、 button1.Capture = false;を設定する必要もありbutton1.Capture = false;メッセージを送信する前にただし、 ToolStripMenuItemでは必要ありません。

その後、ヘルプメニューをクリックすると、カーソルは?に変わり?標準ヘルプボタンをクリックしたときと同じように動作します:

カスタムヘルプボタン

フォームのHelpButtonClickedイベントの処理

ユーザーがクリックしたときには、検出することができますHelpButton取り扱うことにより、フォームのタイトルバー上のHelpButtonClicked 。イベントargsのCancelプロパティをtrue設定することにより、イベントの継続またはキャンセルを許可することができtrue

private void Form1_HelpButtonClicked(object sender, CancelEventArgs e)
{
    e.Cancel = true;
    //Perform some custom action
    MessageBox.Show("Some Custom Help");
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow