[VB2005] Funktionsstörung durch 2. Formular?

Rofi

Erfahrenes Mitglied
Hallo,

ich bin gerade dabei ein E-Book von GalileoPress durchzunehmen. (Einstieg in VB.NET von René Martin)

Hier kommt es in einem komplexeren Beispiel als dem von mir angehängten dazu, dass der Autor, nachdem er einiges anhand von Radiobuttons, Checkboxen usw. in einem Formular gezeigt hat, ein zweites Formular hinzufügt mit "Projekt - Windows Form hinzufügen" und dieses frmForm2 zum Startformular macht.

Auf dem ersten Formular in meinem abgespeckten Bsp. befinden sich 4 Radiobuttons in einer Groupbox und eine Checkbox. Nun sollte es so sein, dass Radiobutton 1 + 2 die Checkbox ein- und Radiobutton 3 + 4 die Checkbox wieder ausschalten können. Der Autor René Martin übergibt dabei eine Schaltervariable an eine EinAus()-Prozedur in einem hinzugefügten Modul. Das klappt auch solange wie Form1 das Startformular ist.

Das zweite Formular in meinem Bsp. enthält nur einen Button der Form1 aufrufen kann. Sobald das 2. Formular aber zum Startformular gemacht wird, funktioniert oben beschriebenes nicht mehr bzw. nur mit den Radiobuttons 2 + 4. Radiobutton 2 + 4 übergeben nämlich keine Variable an ein Prozedur, sondern schalten die Checkbox direkt. Ich habe 2 + 4 zur Demonstration hinzugefügt.
Macht man Formular 1 wieder zum Startformular, so, dass Formular 2 gar nicht angezeigt wird, funktionieren alle 4 Radiobuttons wie erwartet!!?

Der Autor geht leider nicht auf dieses Problem ein. Vielleicht ist es ihm nicht aufgefallen?

Wechselt man in dem Bsp. in der Groupbox zwischen den Radiobuttons 2+4 hin und her, welche die Checkbox ohne Umweg über das Module schalten, sieht man, dass 2+4 funktionieren, wie sie sollen, 1+3 aber nicht!

Kann mir jemand erklären warum?
Danke Euch für Tipps

Code:
Public Class frmForm1

  Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
    Dim fSchalter As Boolean     'Schaltervariable
    fSchalter = True             'Schalter an
    Moduletest.EinAus(fSchalter) 'wird an EinAus() von ModuleTest übergeben
  End Sub

  Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
    CheckBox.Enabled = True      'Schaltet an ohne Umweg über EinAus()
  End Sub

  Private Sub RadioButton3_CheckedChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged
    Dim fSchalter As Boolean     'Schaltervariable
    fSchalter = False            'Schalter aus
    Moduletest.EinAus(fSchalter) 'wird an EinAus() von ModuleTest übergeben
  End Sub

  Private Sub RadioButton4_CheckedChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged
    CheckBox.Enabled = False      'Schaltet die Checkbox ohne Umweg über EinAus()
    CheckBox.Checked = False      'Falls angewählt wird Checkbox abgewählt
  End Sub

  Private Sub frmForm1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    RadioButton1.Checked = True   'Beim öffnen des Formulars Radiobutton1 aktivieren
  End Sub
End Class

Code:
Public Class frmForm2

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim objForm As New frmForm1()
    objForm.Show()  'Zeigt frmForm1 an
  End Sub

End Class

Code:
Module Moduletest

  Public Sub EinAus(ByVal fSwitch As Boolean)
    If fSwitch = True Then
      frmForm1.CheckBox.Enabled = True  'Wenn Schalter an, dann Checkbox anwählbar
    Else
      frmForm1.CheckBox.Enabled = False 'sonst Checkbox nicht anwählbar
      frmForm1.CheckBox.Checked = False 'Häckchen evtl. entfernen
    End If
  End Sub

End Module

Rofi

PS. In der TestApp.zip Datei im Anhang ist die Verzeichnisstruktur enthalten.
 

Anhänge

  • TestApp.zip
    58,7 KB · Aufrufe: 10
  • Form2.jpg
    Form2.jpg
    35,1 KB · Aufrufe: 7
  • Form1.jpg
    Form1.jpg
    47,1 KB · Aufrufe: 8
Zuletzt bearbeitet:
Hallo,

Habe inzwischen raus gefunden, woran es liegt.
In frmForm1 in den Prozeduren "RadioButton1" und "RadioButton3"

'Moduletest.EinAus(fSchalter) <----- ersetzen durch folgende Zeile
Moduletest.EinAus(fSchalter, Me) 'wird an EinAus() von ModuleTest übergeben

und in Moduletest

'Public Sub EinAus(ByVal fSwitch As Boolean) <-----ersetzen durch folgende Zeile!
Public Sub EinAus(ByVal fSwitch As Boolean, ByVal frmForm2 As frmForm2)

Gruß,
Rofi
 

Neue Beiträge

Zurück