0

我正在 C# 项目中实现 WinForms 表单。
我的表单是 MDI 表单的子表单。
我的表单包含一个用户控件。
我的用户控件包含一些按钮,包括验证按钮和取消按钮。

我想实现以下逻辑:

  • 当我的表单处于活动状态并且用户按下回车键时,我希望自动触发验证按钮单击事件。
  • 当我的表单处于活动状态并且用户按下转义键时,我希望自动触发取消按钮单击事件。

如果我的验证和取消按钮不包含在用户控件中,那么我可能会设置表单的 AcceptButton 和 CancelButton 属性。

4

2 回答 2

2

这是我根据 Arthur 在我的第一篇文章的评论中给出的提示在我的用户控件的 Load 事件处理程序中编写的代码:

// Get the container form.
form = this.FindForm();

// Simulate a click on the validation button
// when the ENTER key is pressed from the container form.
form.AcceptButton = this.cmdValider;

// Simulate a click on the cancel button
// when the ESC key is pressed from the container form.
form.CancelButton = this.cmdAnnulerEffacer;
于 2012-08-29T07:32:50.160 回答
1
  1. 从属性设置您的 KeyPreview 属性为 true;

  2. 将 keyDownEvent 添加到您的表单

  3. 在表单的 keyDownEvent 中,包含以下代码行

编码

 if(e.KeyValue==13)// When Enter Key is Pressed
 {
     // Last line is performing click. Other lines are making sure
     // that user is not writing in a Text box
      Control ct = userControl1 as Control;
      ContainerControl cc = ct as ContainerControl;
      if (!(cc.ActiveControl is TextBox))
          validationButton.PerformClick(); // Code line to performClick
 }

 if(e.KeyValue==27) // When Escape Key is Pressed
 {
     // Last line is performing click. Other lines are making sure
     // that user is not writing in a Text box
      Control ct = userControl1 as Control;
      ContainerControl cc = ct as ContainerControl;
      if (!(cc.ActiveControl is TextBox))
          cancelButton.PerformClick(); // Code line to performClick
 }

validationButton 或 cancelButton 是我假设的按钮的名称。你可能有不同的。如果您有不同,请使用您的姓名而不是这两个。

于 2012-08-27T15:38:58.073 回答