我怎样才能有一个自定义类的前。命名为Inputs并在其中包含我所有的winForm按钮单击和Ui元素事件,而不是将其包含在主表单类中?

目前,我将在主窗体类中使用它,但是我想将其移至另一个类。

    private void button1_Click(object sender, EventArgs e)
    {
      // Do something
    }

最佳答案

嗯,有两种不同的方法可以做到这一点。但是,您可以跳过整个自动生成的Click处理程序,并定义自己的处理程序,以避免另一级Method调用。一个非常幼稚的方法是这样的:

public class FormInputHandler
{
    private Form1 _form1;

    public FormInputHandler(Form1 form1)
    {
        _form1 = form1;
        _form1.Controls["button1"].Click += Button1ClickHandler;
    }

    private void Button1ClickHandler(object sender, EventArgs e)
    {
        // Do stuff
    }
}


当然,我不一定要完全做到这一点。但是我认为这说明了这一点。这是您要尝试做的事情。这样,您不必在Form1类文件中拥有所有的Handler方法。然后使用类似这样的方法:

(在private void InitializeComponent()中的Form1.Designer.cs方法内部)

private void InitializeComponent()
    {
        //
        // button1
        //

        // Generated button1 stuff goes here.

        //
        // Form1
        //

        // Generated Form1 stuff goes here

        // Call this at the end so that
        // everything is already added to the form.
        AttachInputHandler();
    }

    #endregion

    private void AttachInputHandler()
    {
        this._inputHandler = new FormInputHandler(this);
    }

    private System.Windows.Forms.Button button1;
    private FormInputHandler _inputHandler;

关于c# - 将按钮单击事件功能移到Visual Studio中的其他类吗? - C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51705148/

10-10 18:19