簡體   English   中英

VB.NET 設置另一種形式的textbos的文本值

[英]VB.NET Set text value of a textbos of another form

我需要的是當form2從form1點擊一個按鈕然后在form2上打開時我點擊另一個按鈕並設置form1的文本框的值。

如果我將應用程序的類型設置為 windows 窗體應用程序,則一切正常,但是如果我將其設置為類庫,則會出現對非共享成員的錯誤引用,需要對象引用。

如果我引用 Dim frm = New form2 它會打開第二個 form2 而我不想要它。

如何解決這個問題?

謝謝你。

這是代碼:

Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Form2.ShowDialog()
End Sub
End Class


Public Class Form2
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Form1.TextBox1.Text = "aaaa"
    Me.Close()

End Sub
End Class

在構建 vb.net winforms 項目時,項目中會生成一些額外的代碼。 例如 Form 類的靜態實例,因此您可以通過類名Form1.ShowDialog()訪問實例方法。

這是為 VB6 程序員完成的,目的是使從 VB 到 VB.NET 的轉換更容易。

當您將項目更改為庫項目時,此代碼不再生成, Form1只是一個類,您不能直接訪問實例方法,而需要“手動”實例化一個實例。

不要使用這個“隱藏的”共享實例,而是手動創建表單實例。 您可以將 form1 的實例傳遞給 form2 的構造函數並從那里更新 form1。

因為您使用的是ShowDialog ,所以我建議讓 Form2 不依賴於 Form1,而不是直接更新 Form1 文本框(您希望避免公開 Form 控件),返回值作為對話框的結果。

Public Class Form2
  Public Property ResultValue As String

  Private Sub Button1_Click(s As Object, e As EventArgs) Handles Button1.Click
    ResultValue = "Value from Form 2";
    DialogResult = DialogResult.OK; ' This suppose to close the form
  End Sub
End Class

Public Class Form1
  Private Sub Button1_Click(s As Object, e As EventArgs) Handles Button1.Click
    Using form As New Form2()
      Dim result As DialogResult = form.ShowDialog()
      If result = DialogResult.OK Then
        TextBox1.Text = form.ResultValue
      End If
    End Using
  End Sub
End Class

將以下內容添加到 form1

Public static sub changeTitle(myTextBox as Object,title as string)
myTextBox.Text=title
End sub

在form2中調用上面的函數

Form1.changeTitle(Form1.TextBox1, "new title")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM