【问题标题】:How to implement a MVC type (global) controller within a VB.Net (windows form) application?如何在 VB.Net(Windows 窗体)应用程序中实现 MVC 类型(全局)控制器?
【发布时间】:2019-04-04 14:17:44
【问题描述】:

我习惯于以 MVC 风格创建 (Excel) VBA 用户表单程序,并且最近更多地关注 VB.Net。

一般来说,我会在 VBA 中创建一个 MVC 样式的用户表单应用程序,方法是创建一个“初始化”函数,该函数创建一个“控制器”模块的实例并利用该控制器中包含的“启动程序”方法。此方法将创建应用程序使用的模型和视图的实例,然后将视图呈现给用户。

例如,

Public Sub Launch()
    With New Controller
        .Present
    End With
    Debug.Print "Execution ended"
End Sub

然后在控制器(类)模块中,我将拥有诸如

之类的代码
Private WithEvents m_View As View
Private m_Model As Model

Public Sub Present()
    Set m_View = New View
    Set m_Model = New Model
    m_View.Show vbModal
End Sub

我对 VB.Net 的问题是没有明显的方法来创建一个等效的“启动器”子程序,它控制程序的执行,而只是向用户提供主窗体的默认实例运行程序。我试图通过创建一个主窗体来复制所需的架构,该主窗体(应该是)在启动程序时立即隐藏。这个隐藏的表单(应该)然后创建所有其他表单的特定实例,控制如何根据一般 MVC 方法处理和返回用户输入。

但是,这不起作用,因为 VB.Net 代码...

Public mSetupForm As SetupForm
Public mOutputForm As OutputForm

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Debug.Print("Program initialized")
    mSetupForm = New SetupForm
    mOutputForm = New OutputForm
    Me.Hide()
    mSetupForm.Show()
End Sub

...不隐藏 Form1。

【问题讨论】:

    标签: vb.net model-view-controller


    【解决方案1】:

    默认情况下,VB.NET 应用程序使用神秘的 Windows 应用程序框架,这意味着构建过程会为您添加一个入口点,该入口点会自动运行您用作主窗体的任何窗体。您可以通过项目属性 > 应用程序 > Windows 应用程序框架属性访问这些设置。

    如果您不想使用该框架,请取消选中 启用应用程序框架 复选框,然后选择您要使用 Sub Main 作为您的 启动对象。然后,您可以使用 Public Sub Main 方法创建一个模块,该方法将作为应用程序的入口点。

    在main中,如果你想显示一个表单,只需调用Application.Run并将你想显示的表单的实例传递给它(如果你愿意,你可以连续多次调用它)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 1970-01-01
      • 2010-09-20
      • 2014-01-15
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多