-1

我不明白为什么按 F1 键后我没有收到帮助消息。例如,当在 Windows 窗体上时,我得到一个按钮并且它具有焦点,消息按预期显示(按 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 回答