Windows 窗体组织代码

mih*_*ocu 5 c# events winforms

好的,这是我的第一个 Windows 窗体应用程序,我在重新构建代码时面临一些困难。开始将所有内容都放在Form1默认提供的类中,它已经变得太大了。我知道这是一种非常糟糕的编程实践,因此我开始进行一些清理并创建不同的类来满足单一责任原则。然而,由于一些与按钮相关和与网格相关的事件在课堂上运行良好Form1,将它们带到外面会使它们崩溃,我不知道应该如何完成。

public partial class Form1
{


    public Form1()
    {
        InitializeComponent();

    }

    private void method1(object sender, EventArgs e)
    {
            //CODE
    }



    private void method2(object sender, DataGridViewCellEventArgs e)
    {
           //CODE
    }



    private void method3(object sender, EventArgs e)
    {
          //CODE
    }

}
Run Code Online (Sandbox Code Playgroud)

所以我想将method1method2等移动method3到不同的类(或不同的类),但几乎不知道如何在不破坏应用程序的情况下做到这一点。好吧,私有显然设置为公共以授予访问权限,但我不知道如何在 Form1 类中调用这些方法。当我创建新类然后尝试调用事件方法时,就像onClick: Newclass.method1()它不起作用一样。我能想到的一件事就是调用一些方法Form1 onClick: thisMethodCallsTheOneINeedInADifferentClass(),但这似乎是一个笨拙的解决方案......我确信有更好的方法来解决这个问题,我只是不知道如何做。感谢您的建议,谢谢

nic*_*coh 4

您应该将事件处理程序保留在表单中,但可以将代码移至另一个类。如果你想调用你的类,你不能直接调用它。你需要做这样的事情:

YourClass class1 = new YourClass(); 
Run Code Online (Sandbox Code Playgroud)

您也可以将其声明为静态,然后只需要调用它一次。

private static YourClass class1 = new YourClass();
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用你的方法:

class1.YourMethod();
Run Code Online (Sandbox Code Playgroud)