2014-09-16 4 views
0

У меня есть приложение MDI VB.net, в котором дочерние формы используют набор данных и одну таблицу. Десятка детей - это десяток наборов данных. Теперь я хотел бы сравнить данные, добавить и объединить таблицы. Удобнее было бы перейти на один общий набор данных с 12 таблицами. До сих пор мне не удалось кодировать общий набор данных, который будет принимать intellisense. Любые предложения будут полезны.vb.net mdi application shared dataset

+1

Не совсем ясно, как вы испытываете трудности или что с ним связано. Если все формы должны иметь доступ к одному объекту, не могут ли они просто получить доступ к одному объекту? Может быть, статическое свойство где-то? Или какой-то синглтон, который управляет объектом? – David

ответ

0

Создайте модуль в своем приложении, который содержит набор данных, и с ним взаимодействуют дочерние формы. Здесь я смог получить набор данных, видимый в intellisense.

Module Module1 
    Private _sharedData As DataSet 
    Public Property SharedData As DataSet 
     Get 
      If (Module1._sharedData Is Nothing) Then 
       Module1._sharedData = New DataSet() 
      End If 
      Return Module1._sharedData 
     End Get 
     Set(value As DataSet) 
      Module1._sharedData = value 
     End Set 
    End Property 

End Module 

У вашего ребенка формы управляют собственной таблицей в наборе данных.

Public Class ChildForm 

    Public Sub New(ByVal Name As String) 
     Me.InitializeComponent() 
     Me.Name = Name 
    End Sub 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Module1.SharedData.Tables.Add("MyTable" + Me.Name) 
    End Sub 

End Class 

Это тест от родителя MDI.

Public Class Form1 

    Private Shared NextNumber As Integer 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim addFrm = New ChildForm(NextNumber.ToString) 

     addFrm.MdiParent = Me 
     addFrm.Show() 

     NextNumber = NextNumber + 1 

    End Sub 

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
     MessageBox.Show(Module1.SharedData.Tables.Count) 
    End Sub 
End Class 
+0

Давид, ваше решение работает отлично. Спасибо –

+0

Я Джимми, Дэвид прокомментировал вопрос :) – JimmyV