2016-05-25 7 views
3

私のC#のコンソールアプリケーションは、ログインするユーザーのためのWindowsフォームを表示し、私はすべてのユーザーは、私が達成しようとしている何か質問にenter image description hereWindowsフォームのタイトルバーでヘルプボタンが押されたときに検出しますか?

を持っているだけの場合には、ログインフォームの最上部にある[ヘルプ]ボタンを追加しましたですユーザーが[ヘルプ]ボタンを押すと、MessageBox()ポップアップが表示されます。私はいくつかの研究を行ってきましたが、まだ実用的なソリューションを見つけることができていません。どんな助けでも大歓迎です!


ありがとうございます。

+2

あなたは見たことがあり[ハウツー-include-help-in-title-bar-of-winform](http://stackoverflow.com/questions/1474663/)または[Adding-help-icon-to-winforms-form-titlebar](http:// stackoverflow.com/questions/1112472/)? – surfmuggle

+0

@slackmuggle私の質問ではありません。 HelpButtonのクリックイベントを追加する方法を尋ねていました。私はそれが働いているが... – C0d1ng

+0

あなたがそれを稼働させ、提供された答えがあなたが探していたものと一致しなかった場合、他の人も同様に利益を得ることができるように答えとしてあなたの解決策を持つことはいいだろう。 – surfmuggle

答えて

0

MSDNによれば、これを処理する方法は、ウィンドウを処理するWM_HELPメッセージ:

DS_CONTEXTHELPは、ダイアログボックスのタイトルバーに疑問符が含まれています。ユーザーが疑問符をクリックすると、カーソルで がポインタ付きの疑問符に変わります。ダイアログボックスでコントロール をクリックすると、コントロールはWM_HELPというメッセージを受信します。コントロール は、ダイアログボックスプロシージャにメッセージを渡す必要があります。このプロシージャは、HELP_WM_HELPコマンドを使用して 関数を呼び出す必要があります。ヘルプアプリケーション には、通常、コントロールのヘルプを含むポップアップウィンドウが表示されます。

DS_CONTEXTHELPはプレースホルダにすぎないことに注意してください。ダイアログボックスが の場合、システムはDS_CONTEXTHELPをチェックし、存在する場合はWS_EX_CONTEXTHELPをダイアログボックスの拡張スタイルに追加します。 WS_EX_CONTEXTHELPWS_MAXIMIZEBOXまたは WS_MINIMIZEBOXスタイルで使用することはできません。簡単に言うと

、あなたは(残念ながら、個別にその基底クラスから派生する必要があります)、フォーム内のコントロールのためのWndProcメソッドを実装する必要があります。

const int WM_HELP = 0x53; 

protected override void WndProc(ref Message m) 
{ 
    switch (m.Msg) 
    { 
     case WM_HELP: 
      // Your handler here 
      break; 
     default: 
      base.WndProc(ref m); 
      break; 
    } 
} 
関連する問題