使用MVP模式将文本框文本从用户表单传递到工作表



好的。。。所以我正试着把我的头脑放在房地产上。我已经在谷歌上搜索了很多,但真的需要试着完全理解。我有三个组件:

  1. 我有一个UserForm:";frmView1">
  2. 我有一个类模块:;clsPresenter1">
  3. 我有一个常规模块:;modModel1">

My UserForm有一个txtbox";TextBox1";这是用户表单代码:

Option Explicit
'View (The V in MVP)
Public Event OnTxtBoxChange()
Public Property Get TxtBoxInfo() As String
TxtBoxInfo = TextBox1.Text
End Property
Private Sub TextBox1_Change()
RaiseEvent OnTxtBoxChange
End Sub

我的课堂模块:

Option Explicit
'Presenter Class (The P in MVP)
'Implements Business Logic
Private WithEvents objUserForm As frmView1
Private Sub Class_Initialize()
Set objUserForm = New frmView1
End Sub
Public Sub TxtBoxContent()
objUserForm.TxtBoxInfo
End Sub
Private Sub objUserForm_OnTxtBoxChange()
DoSomething
End Sub

我的常规模块:

Option Explicit
'Model Module (The M in MVP)
'Business Logic
Private objPresenter As clsPresenter1
Public Sub DoSomething()
Sheet1.Cells.Clear
Sheet1.Cells(3, 3) = objPresenter.TxtBoxContent   
End Sub

所以这是一个缩短的版本,以简化我的问题。事实上,我有代码来显示表单、关闭表单以及其他一些正常工作的东西。但我的问题是…如何将用户在txt框中键入的内容传递到工作表?我不断得到:

Compile error: Expected Function or variable

好的。。。所以我可能已经想明白了。。。我改了:

Public Sub TxtBoxContent()
objUserForm.TxtBoxInfo
End Sub

收件人:

Public Function TxtBoxContent() As String
TxtBoxContent = objUserForm.TxtBoxInfo
End Function

这似乎奏效了。。。如果这不是正确的方式,请告诉我。。。

也许这实际上是正确的方式?再次更改:

Public Sub TxtBoxContent()
objUserForm.TxtBoxInfo
End Sub

收件人:

Public Property Get TxtBoxContent() As String
TxtBoxContent = objUserForm.TxtBoxInfo
End Property

这似乎再次奏效。。。但是,如果我总是可以使用一个属性,为什么我会在我的类模块("演示者")中使用一个函数呢?

相关内容

  • 没有找到相关文章

最新更新