如何从另一个班级

时间:2016-10-11 05:49:33

标签: c# winforms

我有多个按钮,例如“刷新”,“关闭”,“保存”,“删除”。 我希望为F1,F2,F3等功能键分配这些按钮,以便用户按下这些指定的功能键,这些按钮被点击。 我知道如何去表格的keydown事件并简单地做。

由于我有类似的其他表单和按钮,所以我需要消除冗余并将相关代码移动到类中。

我怎样才能实现这个目标..?..

当我问这个时,我得到了Kai Thoma的回答,这正是我正在寻找的。

答案是: -

第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。

但是,我想这可以通过更好的方式使用界面来实现。如果是这样,请指导我如何使用接口...?。

由于

1 个答案:

答案 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;
    }