У меня есть приложение MDI VB.net, в котором дочерние формы используют набор данных и одну таблицу. Десятка детей - это десяток наборов данных. Теперь я хотел бы сравнить данные, добавить и объединить таблицы. Удобнее было бы перейти на один общий набор данных с 12 таблицами. До сих пор мне не удалось кодировать общий набор данных, который будет принимать intellisense. Любые предложения будут полезны.vb.net mdi application shared dataset
0
A
ответ
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
Не совсем ясно, как вы испытываете трудности или что с ним связано. Если все формы должны иметь доступ к одному объекту, не могут ли они просто получить доступ к одному объекту? Может быть, статическое свойство где-то? Или какой-то синглтон, который управляет объектом? – David