私は VB.NET を使用して最初の実際の WinForms アプリケーションに取り組んでおり、プロジェクトは当初の予想よりも少し大きくなっています。私は WinForms でこれを行うことに慣れていないので、見つけた解決策が正しい方法であるかどうかはわかりません。
多くの Control 要素、特に TextBoxes があるため、さまざまなイベントを処理するためのコードを別のクラスに移動する必要があります。私が見た限りでは、作業しているプログラムの種類に応じて、これを行う方法はさまざまです。最も理解しやすいのは、追加のクラスを作成し、WithEvents を使用して必要なすべての Control オブジェクトを宣言することです。たとえば、私のメインクラスでは次のようになります。
Private Sub txtCustomerName_TextChanged(sender As Object, e As EventArgs) Handles txtCustomerName.TextChanged
' do lots of stuff here
End Sub
代わりに、そのすべてのコードを新しいクラスに移動したい場合は、次のようになります。
Public Class Events
Public WithEvents txtCustomerName As TextBox
Public Sub New()
End Sub
Private Sub txtCustomerName_TextChanged(sender As Object, e As EventArgs) Handles txtCustomerName.TextChanged
' do lots of stuff here...
End Sub
End Class
つまり、メインクラスで今しなければならないことは次のとおりです。
Dim events As New Events()
events.txtCustomerName = txtCustomerName
他のすべての Control 要素についてもこれを行います。そうすれば、メイン クラスをよりクリーンに保つことができますが、イベント リスナー コードでいっぱいの巨大なクラスになってしまいます。これで少しは楽になると思うのですが、やはり下品な感じがします。私の次のアイデアは、これをさらに分割して、TextBox イベント用に 1 つのイベント クラスを作成し、Button イベント用に別のイベント クラスを作成することです。私は何かが完全に欠けています。