Boolean-Variablen werden nicht auf "True" gesetzt?

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Memo.

    Boolean-Variablen werden nicht auf "True" gesetzt?

    Hi Leute!

    Ich mache mir gerade einen BuyScript Generator für das Spiel Counter-Strike 1.6 :D

    Ich mache dies über 1 TextBox (um die Taste zu definieren), 2 ComboBoxen(Primär-Waffe & Sekundär-Waffe) und 1 Button, der eine zweite Form aufruft. Dann habe ich in der ersten Form Boolean-Variblen deklariert. Auf der zweiten kann man sein Equipment auswählen. Wenn man dort auf "Ok" klickt, werden die Variablen der Form1 auf "True" gesetzt. Nach dem Generieren des Scripts werden die Variablen auf "False" gesetzt. Wenn man dann noch einen Bind generieren will, und die Form2 aufruft, werden die Variablen aber nicht mehr auf "True" gesetzt :huh:

    Screenshots:



    Der Code um die Variablen auf "True" zu setzten:


    VB.NET-Quellcode

    1. ' Die Variablen der Form1 = CheckBoxen.Checked
    2. main.vest = vest.Checked
    3. main.vesthelm = vesthelm.Checked
    4. main.flash = flash.Checked
    5. main.hegren = hegren.Checked
    6. main.sgren = sgren.Checked
    7. main.defuser = defuser.Checked
    8. main.nightv = nightv.Checked
    9. main.shield = shield.Checked
    10. main.ammo = ammo.Checked
    11. Me.Close()
    12. main.Select()


    Ich habs einfach mal den Wert der Variablen nach dem 2ten mal ausgegeben, und sie sind immer noch auf "False" ?(
    Kann mir einer erklären wieso?

    Freue mich auf Antworten :rolleyes:


    Gruß
    Hunter110

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Hunter110“ ()

    Hunter110 schrieb:

    Ja, 'main' ist die 'Form1'

    Sagt mir ... nix ...

    main ist eine Instanz von Form1? Oder hast du deine Form1 nach main umbenannt? Wenn main eine Instanz ist, wo wird sie erzeugt und wie an die zweite Form übergeben?

    Im übrigen scheint das ganze Konstrukt nicht allzu klar/sauber. Warum öffneest du die zweite Form nicht einfach mit ShowDialog. Und warum darf die zweite Form direkt in die erste schreiben, anstatt dass ein Objekt (oder mehrere) mit den gewünschten Werten von der ersten Form ausgelesen wird (analog s. zb FileOpenBrowserDialog etc).
    Soo...
    Noch mal von vorne:

    Die Variablen sind als Public deklariert. Wie gesagt, beim ersten Versuch läuft ja auch alles, nur beim 2ten Mal nicht mehr.
    Meine 'main' ist meine umbenannte Form1.

    Wenn in der Form2 meines Programms auf 'Ok' geklickt wird, werden die Variablen in 'main' auf True gesetzt.

    Tut mir Leid, wenn ich das nen bissl schief erklärt hab :D

    VB.NET-Quellcode

    1. 'Form1
    2. Public Class Form1
    3. Public b1 As Boolean = False
    4. Public b2 As Boolean = False
    5. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    6. Form2.Show()
    7. End Sub
    8. End Class
    9. 'Form2
    10. Public Class Form2
    11. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    12. Form1.b1 = CheckBox1.Checked
    13. Form1.b2 = CheckBox2.Checked
    14. MsgBox(Form1.b1 & " " & Form1.b2)
    15. End Sub
    16. End Class


    Geht bei mir ?(


    Gruss
    Pascal
    Geht bei mir ?(

    Ja, bei mir ja auch!! :D

    Aber eben nur einmal, und das ist mein Problem.

    Ich Generiere den ersten Bind. funktionier alles Super.
    Dann möchte ich einen weiteren hinzufügen. Diesmal wird alles ausgegeben, nur eben das "Equipment" nicht, also die Variablen...Ich habe einfach mal zum Test nen Button hinzugefügt, und nach dem ersten Bind die Variablen ausgegeben. Das Resultat war "False". Die Variablen werden also beim 2ten Mal nicht auf "True" gesetzt, warum auch immer.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Hunter110“ ()

    Nein das ist es nicht :/
    Kurz: Es funktioniert nur 1 Mal.

    Wenn ich das erste mal auf den Button klicke, funktioniert alles Super.
    Wenn ich dann noch einmal draufklicke funktioniert nicht mehr, weil die Variablen immer noch auf False sind (was sie aber eigentlich nicht sein sollten, da ich sie ja mittels Button auf der Form2 wieder auf True schalte).

    Edit: Ich poste einfach mal meinen ganzen Code, vielleicht könnt ihr mir dann sagen, wo der Fehler steckt :D

    Form1:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class main
    2. Public vest As Boolean
    3. Public vesthelm As Boolean
    4. Public flash As Boolean
    5. Public hegren As Boolean
    6. Public sgren As Boolean
    7. Public defuser As Boolean
    8. Public nightv As Boolean
    9. Public shield As Boolean
    10. Public ammo As Boolean
    11. Dim primaer As String
    12. Dim sekundaer As String
    13. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles equipment.Click
    14. Form2.Show()
    15. End Sub
    16. Private Sub cmd_generieren_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_gen.Click
    17. If key.Text = Nothing Then
    18. MsgBox("Please set a Key!", MsgBoxStyle.Critical, "Error")
    19. Else
    20. primär_sekundär()
    21. Dim script As String = RichTextBox1.Text
    22. RichTextBox1.Clear()
    23. RichTextBox1.Text = vbNewLine & "bind " & """" & key.Text & """" & " """ & primaer & "; " & sekundaer & "; " & script
    24. If vest = True Then RichTextBox1.Text += "vest" & "; "
    25. If vesthelm = True Then RichTextBox1.Text += "vesthelm" & "; "
    26. If flash = True Then RichTextBox1.Text += "flash" & "; "
    27. If hegren = True Then RichTextBox1.Text += "hegren" & "; "
    28. If sgren = True Then RichTextBox1.Text += "sgren" & "; "
    29. If defuser = True Then RichTextBox1.Text += "defuser" & "; "
    30. If nightv = True Then RichTextBox1.Text += "nvgs" & "; "
    31. If shield = True Then RichTextBox1.Text += "shield" & "; "
    32. If ammo = True Then RichTextBox1.Text += "primammo; secammo" & "; "
    33. RichTextBox1.Text += """"
    34. If f10.Checked = True Then
    35. RichTextBox1.Text += vbNewLine & "bind " & """" & "f10" & """" & " """ & "quit" & """"
    36. f10.Checked = True
    37. f10.Enabled = False
    38. End If
    39. key.Clear()
    40. primär.Text = Nothing
    41. sekundär.Text = Nothing
    42. f10.Checked = False
    43. vest = False
    44. vesthelm = False
    45. flash = False
    46. hegren = False
    47. sgren = False
    48. defuser = False
    49. nightv = False
    50. shield = False
    51. ammo = False
    52. End If
    53. End Sub
    54. Private Sub primär_sekundär()
    55. ' primär ist meine erste combobox
    56. Select Case primär.SelectedIndex
    57. Case 0
    58. primaer = "m3"
    59. Case 1
    60. primaer = "xm1014"
    61. Case 2
    62. primaer = "tmp"
    63. Case 3
    64. primaer = "mac-10"
    65. Case 4
    66. primaer = "mp5"
    67. Case 5
    68. primaer = "ump45"
    69. Case 6
    70. primaer = "p90"
    71. Case 7
    72. primaer = "famas"
    73. Case 8
    74. primaer = "galil"
    75. Case 9
    76. primaer = "scout"
    77. Case 10
    78. primaer = "ak47"
    79. Case 11
    80. primaer = "m4a1"
    81. Case 12
    82. primaer = "aug"
    83. Case 13
    84. primaer = "sg552"
    85. Case 14
    86. primaer = "sg550"
    87. Case 15
    88. primaer = "awp"
    89. Case 16
    90. primaer = "g3sg1"
    91. Case 17
    92. primaer = "m249"
    93. End Select
    94. ' sekundär ist meine zweit combobox
    95. Select Case sekundär.SelectedIndex
    96. Case 0
    97. sekundaer = "glock"
    98. Case 1
    99. sekundaer = "usp"
    100. Case 2
    101. sekundaer = "p228"
    102. Case 3
    103. sekundaer = "deagle"
    104. Case 4
    105. sekundaer = "fn57"
    106. Case 5
    107. sekundaer = "elites"
    108. End Select
    109. End Sub
    110. End Class


    Form2:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form2
    2. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. main.vest = vest.Checked
    4. main.vesthelm = vesthelm.Checked
    5. main.flash = flash.Checked
    6. main.hegren = hegren.Checked
    7. main.sgren = sgren.Checked
    8. main.defuser = defuser.Checked
    9. main.nightv = nightv.Checked
    10. main.shield = shield.Checked
    11. main.ammo = ammo.Checked
    12. Me.Close()
    13. main.Select()
    14. End Sub
    15. End Class


    Gruß
    Hunter110

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Hunter110“ ()

    Dann solltest du beim Laden der Form2 den CheckBoxen auch die Werte der Variablen von Form1 zuweisen, den sonst passiert das, was der_Kurt angetönt hat. Die Checkboxen, etc. werden neu erstellt und haben alle den wert "False". Wenn du nun wieder auf den Button klickst, werden auf Form1 alle Variablen auf "False" gestellt.
    Einfach umgehen kannst du das Problem, wenn du Form2.Hide() anstelle von Form2.Close() machst, denn so wird die Form beibehalten und nur versteckt ;)


    Gruss
    Pascal
    Dann solltest du beim Laden der Form2 den CheckBoxen auch die Werte der Variablen von Form1 zuweisen, den sonst passiert das, was der_Kurt angetönt hat. Die Checkboxen, etc. werden neu erstellt und haben alle den wert "False". Wenn du nun wieder auf den Button klickst, werden auf Form1 alle Variablen auf "False" gestellt.


    Ja, aber im Click-Event des Buttons auf der Form2 steht doch, dass die Variablen der Form1 wieder auf "True" gesetzt werden. Zumindest die, die auch True sind.
    Oder versteh ich da irgendwas falsch?