2015-04-20 76 views
1
Private Sub tsGradovi_Click(sender As Object, e As EventArgs) Handles tsGradovi.Click 
     For Each f As Form In Application.OpenForms 
      If TypeOf f Is frmGradovi Then 
       f.Activate() 
       Return 
      End If 
     Next 
     Dim f2 As New frmGradovi 
     f2.MdiParent = Me 
     f2.Show() 
     f2.WindowState = FormWindowState.Maximized 
     resetdgvGradova() 
    End Sub 

在這種方式下,我將子表單添加到我的主窗體。
在那個frmGradovi窗體上我有datagridview。現在我將課程添加到了我的項目中。訪問子表單

如何從我的課程添加datagridview源代碼。

這個代碼是沒有幫助

frmGradovi.DGV.DataSource = SQLDataset.Tables(0) 

Probabbly因爲frmGradovi是Form1的MDI子。

編輯: enter image description here

在類konekcija我需要設置數據源爲frmGradovi形式。但該frmGradovi表單是Form1的mdi子表單形式

+0

我沒有看到你把它設置在任何地方......?你需要使用你的對象,例如:f2或f在上面的代碼中。 – Codexer

+0

我將它設置在我的課程上。 Konekcija。看看這張照片。在類konekcija我需要爲frmGradovi表單設置數據源。但是這個frmGradovi表單是Form1的一個mdi子表單http://pokit.org/get/?6bac48f91f917869c2cef890e1bd02cc.jpg –

+0

當你創建表單時它是'f2' - 一個實例。後來的隔離片段使用默認實例'frmGradovi'。他們是兩個不同的東西。 – Plutonix

回答

2

避免這些類型的難題的一種方法不是編寫以表單爲中心的代碼。它們基本上是用於收集用戶輸入的沙箱。另一個元素是明確的實例形式:在你的代碼f2frmGradovi的一個實例。試圖將它作爲frmGradovi引用其他位置有可能會創建一個新的默認實例(稍後您的Forms集合中會有兩種類型的frmGradovi)。

我不知道什麼是Gradovikonekcija是,所以我會用一個Customer例子。我的應用可能有frmCustomerCustomer類。當談到時間,顯示了一定的客戶,而不是MDI父窗體代碼或點擊按鈕創建形式,我會離開那份工作的Customer類:

Public Class Customer 
    ' myFrm is an instance of frmCustomer, which is a Type 
    Private myFrm As frmCustomer 
    Private myDT As DataTable 

    Public Sub Display(Id As Int32) 

     CustId = Id 

     If myFrm Is Nothing Then 
      myFrm = New frmCustomer 
      ' MDI boilerplate code 
      '... 
      ' one time setup code like populate static CBOs: 
      '... 
     End If 

     UpdateDisplay() 
     myFrm.BringToFront() 
    End Sub 

    Public Sub UpdateDisplay() 
     ' display code when something changes such as show new selected Customer 
     ' e.g.: 
     LoadCustDataToDataTable(CustId) 

     With myFrm 
      .tbfirstName.Text = FirstName 
      .tbLastName.Text = LastName 
      ' ...etc 
      .dgvPastOrders.DataSource = myDT 
     End With 
    End Sub 

「密鑰」是客戶班主管客戶形式。它創建它並保留對它的引用。當用戶點擊Save時,該任務也會被卸載到Customer.Save方法。

當用戶關閉表單時(如果它們被允許關閉而不是隱藏它),您將有其他迴轉來添加處理。在你目前的方法中,你的班級可以根據需要從集合中提取其形式的引用。