2013-12-18 71 views
2

我有一個帶有電子郵件地址的表單列表框。我可以通過從列表框中選擇並按下「編輯」按鈕來編輯電子郵件地址。一個新的表單顯示一個文本框,我可以編輯和保存電子郵件地址。它工作並編輯數據庫中的字段。 (注意:第一種形式不會消失,也不應該)在關閉另一個表單後刷新列表框

問題是:當我保存新地址時,「編輯」窗體關閉,並且以前的窗體(保持打開並可見)顯示列表框與舊的電子郵件。編輯其中一個項目後,我需要刷新該ListBox。

下面是一些代碼:

Private Sub btn_Edit_Click(sender As Object, e As EventArgs) Handles btn_Edit.Click 

    'some irrelevant code for this 

    Dim fEditCompanyEmail As New frmEditCompanyEmail(oldEmail, masterCompany, company) 
    fEditCompanyEmail.Show() 

End Sub 

上面是「編輯」按鈕(在形式,其中列表框)

Private Sub btn_Save_Click(sender As Object, e As EventArgs) Handles btn_Save.Click 

    Dim newEmail As String = txt_newEmail.Text 

     Try 

      _controller.UpdateCompanyEmail(company, newEmail, _oldEmailParameter) 
      MsgBox("Email address edited successfully!", MsgBoxStyle.Information, "Success") 
      Me.Close() 

     Catch ex As Exception 
      MsgBox(ex.Message, MsgBoxStyle.Critical, "#378-6 Critical Error!") 
      Me.Close() 
     End Try 

End Sub 

上面是「保存」按鈕單擊事件處理程序(在「編輯電子郵件」表格)

我需要刷新第一個窗體上的ListBox,因爲我確認了第二個窗體中電子郵件地址的編輯。 有誰知道我該怎麼做到這一點?

由於

+1

你可以寫第一個窗體上的函數(列表視圖),這將刷新列表框包含。請參閱鏈接http://msdn.microsoft.com/en-us/library/system.windows.forms.currencymanager.refresh(v=vs.110).aspx您必須使用第一種形式的對象調用該函數,然後然後關閉第二個表格(編輯電子郵件表格)。 – Pushkar

+0

我已經有一個刷新功能,一個公共的,我試圖訪問第一個打開的表格 – chiapa

回答

1

好之後調用RefreshItems方法,我知道了:

我發送的第一形式爲所述第二形式的參數,並將其傳遞給局部變量「_companyForm」(更改了第二個表單的構造函數以接收它)

Dim fEditCompanyEmail As New frmEditCompanyEmail(oldEmail, masterCompany, company, Me) 

以第一種形式將刷新功能設置爲「public」。 聲明一個新窗體並將其值設置爲包含第一個窗體的私有變量。

Dim formCompany As frmCompany = _companyForm 

最後在將記錄更新到數據庫後調用函數。

formCompany.RefreshTabEmailList() 

感謝您的麻煩反正

Chiapa

1

嘗試關閉fEditCompanyEmail

YourProjectName.Form1.Listbox.RefreshItems() 
+0

這是行不通的,因爲我沒有第一個表格的實例。我試圖將第一個表單作爲參數傳遞給第二個表單,並嘗試對其進行操作。 – chiapa

+1

對不起。編輯。您需要在引用任何對象之前指定您的項目名稱 – equisde

+0

沒問題,反正無法使用。我可以訪問表單共享屬性,但不能訪問它的潛艇 – chiapa