首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

VB.NET 窗體關閉時傳值給另一窗體:事件模式解耦

     編輯:程式設計疑難解答

核心模式:Form2 定義事件,Form1 訂閱

' Form2.vb
Public Event DataSent(value As String)

Private Sub Form2_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    RaiseEvent DataSent(txtInput.Text)
End Sub
' Form1.vb
Dim f2 As New Form2()
AddHandler f2.DataSent, AddressOf Me.OnDataReceived
f2.Show()

Private Sub OnDataReceived(value As String)
    Me.Text = "收到:" & value
End Sub

優勢

  • 雙向解耦:Form2 不持有 Form1 引用,不產生循環引用/內存洩漏。
  • 多對多:多個 Form1 實例可同時訂閱同一 Form2。
  • 符合 .NET 事件模型最佳實踐。

替代:ShowDialog + 返回值

Dim f2 As New Form2()
If f2.ShowDialog() = DialogResult.OK Then
    Me.Text = f2.ReturnValue  ' Form2 公共屬性
End If

適用於「模態等待結果」場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved