首页 > 解决方案 > 如何在 WinForms 应用程序中正确构造类和事件

问题描述

我正在使用 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 事件的事件类和另一个用于 Button 事件的事件类 - 但是我什至不确定我在这里是否走在正确的道路上,或者我是否'我完全错过了一些东西。

标签: vb.netwinformsevent-handlingdelegatesclass-structure

解决方案


推荐阅读