2013-01-23 71 views
0

我有一個子窗體,可以在關閉窗體並返回主窗體之前輸入數據並將其保存。 當我重新打開子表格時,我看不到前面輸入的數據發生變化。 任何人都可以告訴我我錯了嗎?Windows窗體關閉後刪除窗體數據

MainForm.vb 
    Public Class Maincls 
    oTestObj as New Testcls 
    oTestObj.XYZ = "XYZ" 

    Private Sub SoftwareSettingsToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles SoftwareSettingsToolStripMenuItem.Click 

    Testcls.tbXYZ.Text = oTestObj.m_XYZ 
    Testcls.Show() 
    End Sub 
    End Class 


    Form_Testcls.vb 
    Public Class Testcls 

    Structure Params 
    Dim m_XYZ as String 
    End Structure 
    Dim oParams as Params 

    Public Sub New() 
    InitializeComponent() 
    End Sub 

    Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click 
    XYZ = tbXYZ.Text 
    Me.Hide() 
    End Sub 

    Public Property XYZ() As String 
      Get 
       Return Me.oparams.m_XYZ 
      End Get 
      Set(ByVal value As String) 
       Me.oparams.m_XYZ = value 
      End Set 
     End Property 
    End Class 
+0

您創建窗體的新實例,應該像你。是的,這個新實例不記得舊的那個樣子。你必須幫忙。 –

+0

假設我打開表格Testcls並進行更改並單擊確定按鈕,然後重新打開表格Testcls,所做的更改未以 的形式顯示。方法SoftwareSettingsToolStripMenu_Click中的對象OTestcls不包含m_XYZ的更新值。 你能告訴我如何更新方法SoftwareSettingsToolStripMenu_Click中的更改並將它們提供給文本框? 什麼時間點我應該創建另一個對象,我該在哪裏做? 謝謝 –

+0

快速和骯髒的解決方案可能會將'Testcls.Show()'更改爲'oTestObj.Show()'這將只是重新顯示相同的形式。但是您應該創建一個新窗體並傳入包含要顯示的值的對象。當表單關閉時,將值保存到對象中。 – endofzero

回答

0

我認爲在Windows窗體的工作是爲了創建一個靜態類,並根據您的要求添加屬性。然後在關閉表單時填充這些靜態屬性。現在,您可以使用靜態數據成員中設置的值,除非您在其他事件中更改它們。

編輯:在vb.net靜態實際上是NonInheritable