Hallo!
Dein Zugriff kann nicht klappen, weil die Instanz Form2 zwar
in der Auflistung des Parent-Control enthalten ist,
aber Du sprichst mit "Form2" nicht diese Instanz, sondern
eine Default-Instanz der Klasse Form2 an.
Wenn Du das Parentformular eines Usercontrols über einen
Vorgang informieren möchtest, kannst Du z.B. ein Event im
Usercontrol auslösen, das ggf. im Parent-Formular verarbeitet
wird.
Zugriffsvariable auf Steuerelemente werden gewöhnlich nicht innerhalb
einer Routine deklariert, sondern unter Verwendung von "WithEvents"
im Deklarationsteil (hinter Class/Inherits).
Vielleicht hilft dieses Beispiel(ucDemo1 in ucDemo2 auf Form1).
'In ein Klassenmodul einfügen
Imports System.Windows.Forms
Public Class ucDemo1
Inherits UserControl
Dim WithEvents mylabel As New Label _
With {.Parent = Me, .Dock = DockStyle.Top, .Text = "UC1-Label"}
Dim WithEvents mybutton As New Button With _
{.Parent = Me, .Dock = DockStyle.Bottom, .Text = "UC1-Button"}
Public Event uc1_click(ByVal sender As Object, ByVal e As EventArgs)
Private Sub mybutton_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mybutton.Click
RaiseEvent uc1_click(Me, e)
End Sub
End Class
Public Class ucDemo2
Inherits UserControl
Public Event uc1Button_click(ByVal sender As Object, ByVal e As EventArgs)
Dim WithEvents myUC As New ucDemo1 With _
{.Parent = Me, .Dock = DockStyle.Top, .Text = "UC1-Label"}
Dim WithEvents mybutton As New Button With _
{.Parent = Me, .Dock = DockStyle.Bottom, .Text = "UC2-Button"}
Private Sub myUC_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles myUC.uc1_click
RaiseEvent uc1Button_click(sender, e)
End Sub
Private Sub mybutton_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mybutton.Click
MyBase.OnClick(e)
End Sub
End Class
'In ein Formular einfügen
Public Class Form1
Dim WithEvents uc2DemoInst As New ucDemo2 _
With {.Parent = Me, .Dock = DockStyle.Fill}
Private Sub UcDemo21_uc1Button_click(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles uc2DemoInst.uc1Button_click
MsgBox("Der Button in UC1Demo ist geclickt worden")
End Sub
Private Sub UcDemo21_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles uc2DemoInst.Click
MsgBox("Der Button in UC2Demo ist geclickt worden")
End Sub
End ClassMfG
Manfred
Beitrag wurde zuletzt am 17.11.11 um 21:52:26 editiert. |