-1

F1 キーを押した後にヘルプ メッセージが表示されなかった理由がわかりません。Windowsフォームでたとえば1つのボタンを取得し、フォーカスがある場合、(F1を押した後)メッセージが期待どおりに表示されますが、空のフォームを取得すると、これは発生しません。空のフォームにはデフォルトでフォーカスが設定されていると思います。(フォーカスを取得したコントロールに対して F1 を押すと、このイベントが発生することを読みました)

これは正しい動作ですか、それとも空のフォームの「HelpRequested」イベントについて何か不足していますか? これは、フォーカスに基づいてイベントを発生させる正しい方法ですか、それとも別のイベント (onMouseOver など) でも発生するように構成できますか? 自分のイベントを作成して上げてもいいですか? (ヘルプ専用の特別なボタンを追加したくありません。たとえば、このボタンを押してヘルプを表示します。ヘルプは F1 を押した後にのみ表示する必要があります)。

これはコードです:

        private void Form1_Load(object sender, EventArgs e)
        {
           Form1.ActiveForm.HelpRequested += new HelpEventHandler(helpReq);

           //button1.HelpRequested += new HelpEventHandler(helpReq);
        }

        private void helpReq(object sender, HelpEventArgs hlpevent)
        {
          MessageBox.Show(((Control)sender).Text);
        }
4

1 に答える 1

1
  • の使用Form1.ActiveFormはお勧めしません。に変更しますthis
  • Textに関連付けられたプロパティはありませんControl。どういう意味Tagですか?
  • ヘルプイベントを実行した後、HelpEventArgs.Handledをtrueに設定する必要があります
  • イベントを使用する代わりに、フォームでオーバーライドすることができますOnHelpRequested

私はこのような何かをします:

 protected override void OnHelpRequested(object sender, HelpEventArgs e)
 {
    MessageBox.Show((Control) sender).Tag);
    e.Handled = true;

    base.OnHelpRequested(sender, e);
 }
于 2012-11-09T22:25:02.787 に答える