我有多个按钮,例如“刷新”,“关闭”,“保存”,“删除”。 我希望为F1,F2,F3等功能键分配这些按钮,以便用户按下这些指定的功能键,这些按钮被点击。 我知道如何去表格的keydown事件并简单地做。
由于我有类似的其他表单和按钮,所以我需要消除冗余并将相关代码移动到类中。
我怎样才能实现这个目标..?..
当我问这个时,我得到了Kai Thoma的回答,这正是我正在寻找的。 p>
答案是: -
第1步:创建一个类,如下所示
public static class RefreshHandler
{
public static void HookRefreshButton(Form form, Button btnDelete, Button btnRefresh, Button btnOk)
{
form.KeyPreview = true;
form.KeyDown += (object sender, KeyEventArgs e) =>
{
if (e.KeyData == Keys.F4) btnDelete.PerformClick();
if (e.KeyData == Keys.F5) btnRefresh.PerformClick();
if (e.KeyData == Keys.F10) btnOk.PerformClick();
};
}
}
第2步:从表单构造函数调用它或加载如下: -
private void frmForm1_Load(object sender, EventArgs e)
{RefreshHandler.HookRefreshButton(this, btnDelete, btnRefresh, btnOk);}
多数民众赞成。它的工作完美。非常感谢Kai。
但是,我想这可以通过更好的方式使用界面来实现。如果是这样,请指导我如何使用接口...?。
由于
答案 0 :(得分:0)
试试这个
public class MyClassEvent
{
public static void OnClick(object sender, EventArgs e)
{
Button mybotton = sender as Button;
Form myform = mybotton.Parent as Form; //If button is directly onform
}
}
以您的形式:
private void Form1_Load(object sender, EventArgs e)
{
button1.Click += MyClassEvent.OnClick;
}