| |
VB.NET - Ein- und UmsteigerAuf Werte in verschiedenen Instanzen eines Formulars zugreifen | | | Autor: Novatlan | Datum: 24.06.20 16:29 |
| Hallo!
Ich habe eine Anwendung, die ein Formular ("frmList") enthält, welches ein DataSet ("dsTable") hat.
Nun kann der Nutzer mehrere Instanzen dieses Formulars öffnen, in welchen das DataSet jeweils eine andere Datenquelle hat.
Innerhalb des Formulars werden andere Formulare per.ShowDialog geöffnet, welche jeweils auf das DataSet ihres Elternformulars zurückgreifen müssen. Und genau da hänge ich. Wenn ich (entweder per Getter/Setter oder auf das Public dsTable as DataSet (und ja, ich weiß, daß man das nicht macht, ich wollte es nur probieren da eben nichts funktioniert)) zugreife, z.b. dsTable.Rows..., dann "erreiche" ich nicht das DataSet des Elternformulars, sondern das DataSet der ursprünglichen Formular-Klasse. Und das ist natürlich leer.
Daher die Frage: Wie greife ich auf Variablen/Controls/etc einer bestimmten Instanz eines Formulars zu?
Ich suche nun schon den ganzen Tag und finde nichts...
beste Grüße!
Novatlan | |
Re: Auf Werte in verschiedenen Instanzen eines Formulars zugreifen | | | Autor: Manfred X | Datum: 24.06.20 19:08 |
| Hallo!
Du solltest Deine Formulare explizit (z.B. in einem Stammformular) erstellen (New).
Dann kannst Du jeweils über die jeweils verwendete Zugriffsvariable (Referenz) auf die
Instanz bzw. auf Properties der Instanz zugreifen.
Ohne nähere Angaben zur Struktur Deines Programms kann man aber
nichts weiteres sagen.
WinForms-Beispiel
Public Class frmTestIt
Dim _tbl As DataTable
Public Property tbl As DataTable
Set(value As DataTable)
_tbl = value
dgv.DataSource = _tbl
End Set
Get
Return _tbl
End Get
End Property
Dim dgv As New DataGridView With {.Parent = Me, .Top = 50}
Dim subform, subform2 As frmTestIt
Dim WithEvents btnSubForms As New Button With
{.Parent = Me, .Text = "Subform"}
Private Sub btnSubForms_Click(sender As Object, e As EventArgs) Handles _
btnSubForms.Click
subform = New frmTestIt
With subform
.tbl = New DataTable
.tbl.Columns.Add("S1")
.Location = Me.Location
.Location.Offset(New Point(20, 20))
.Show()
End With
subform2 = New frmTestIt
With subform2
.tbl = New DataTable
.tbl.Columns.Add("S2")
.Location = Me.Location
.Location.Offset(New Point(40, 40))
.Show()
End With
End Sub
Private Sub frmTestIt_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.StartPosition = FormStartPosition.Manual
End Sub
End Class
Beitrag wurde zuletzt am 24.06.20 um 19:12:16 editiert. | |
Re: Auf Werte in verschiedenen Instanzen eines Formulars zugreifen | | | Autor: Novatlan | Datum: 01.07.20 18:57 |
| Hallo Manfred!
Vielen Dank und Entschuldigung für die späte Antwort; kam heute erst wieder dazu, mich mit dem Problem zu beschäftigen.
Ich glaube mein Problem ist anders gelagert.
Ich habe z.B. ein Form "frm_singleList"
Darin einen data table "dt_times".
Von diesem frm_singleList gibt es mehrere Instanzen, jeweils über
Dim newList As New frm_singleList
With newList
.str_dataTableLocation = SaveFileDialog1.FileName
.bln_makeNewList = True
End With
newList.Show() angezeigt. Der DataTable wird dann jeweils in der im SaveFileDialog1 gewählten Datei gespeichert.
frm_singleList (bzw die verschiedenen Instanzen davon) rufen über Buttons mehrere weitere Formulare ab, in denen z.b. in Textboxen Daten eingegeben werden.
z.b. per
Dim addTime As New frm_addTime()
addTime.ShowDialog(Me) Diese Daten müssen an die Instanz von frm_singleList zurück um beispielsweise in den DataTable Informationen einzufügen. Aber ich kann eben nicht
frm_singleList.dt_times.Rows.Add, etc... machen, weil frm_singleList.dt_times ja der DataTable der Basisklasse des Formulars ist, nicht die "Version" von dt_times in der jeweiligen Instanz.
Hier suche ich nach einer Lösung, Elemente (Data Tables, Controls) in der jeweiligen Instanz von frm_singleList anzusprechen, von der aus das Eingabeformular aufgerufen wurde.
Ich hoffe das macht es einigermaßen klar. Ich kann gerne den kompletten Code posten, aber der ist ewig lang und nur super einfaches Standartdzeugs. Ich vermute, daß ich etwas Grundlegendes nicht verstanden habe, nämlich wie ich Daten zwischen Forms austauche und von einer Form X beliebige Elemente auf einer spezifischen Instanz von Form Y zugreife und ändere.
beste Grüße!
Novatlan | |
Re: Auf Werte in verschiedenen Instanzen eines Formulars zugreifen | | | Autor: Manfred X | Datum: 01.07.20 19:23 |
| Hallo!
Untergeordnete Formulare lösen ein Event aus und übergeben im Eventparameter
die erforderlichen Angaben zum Ereignis und z.B. die Referenz auf die Instanz
der Daten-Klasse, deren Inhalt im übergeordneten Formular verarbeitet werden soll.
Im übergeordneten Formular werden die im Eventhandler als Parameter übergebenen
Angaben (Datenzeile, Datenspalte) und die Daten in die Datenquelle
eingetragen.
Nie sollte ein untergeordnetes Formular auf andere Weise mit dem übergeordneten
Formular kommunizieren. Es entstünden leicht Abhängigkeiten, die ein unberechenbares
Programmverhalten zur Folge hätten.
Beitrag wurde zuletzt am 01.07.20 um 19:25:22 editiert. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|