我正在 C# 项目中实现 WinForms 表单。
我的表单是 MDI 表单的子表单。
我的表单包含一个用户控件。
我的用户控件包含一些按钮,包括验证按钮和取消按钮。
我想实现以下逻辑:
- 当我的表单处于活动状态并且用户按下回车键时,我希望自动触发验证按钮单击事件。
- 当我的表单处于活动状态并且用户按下转义键时,我希望自动触发取消按钮单击事件。
如果我的验证和取消按钮不包含在用户控件中,那么我可能会设置表单的 AcceptButton 和 CancelButton 属性。
我正在 C# 项目中实现 WinForms 表单。
我的表单是 MDI 表单的子表单。
我的表单包含一个用户控件。
我的用户控件包含一些按钮,包括验证按钮和取消按钮。
我想实现以下逻辑:
如果我的验证和取消按钮不包含在用户控件中,那么我可能会设置表单的 AcceptButton 和 CancelButton 属性。
这是我根据 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;
从属性设置您的 KeyPreview 属性为 true;
将 keyDownEvent 添加到您的表单
在表单的 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 是我假设的按钮的名称。你可能有不同的。如果您有不同,请使用您的姓名而不是这两个。