按下F1后,不显示帮助

时间:2012-11-09 21:42:17

标签: c# windows forms

我不明白为什么在按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);
        }

1 个答案:

答案 0 :(得分: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);
 }