über meinen Nummernblock z.B. die Taste 1 drücken für das Ereignis welches mit der Button 1_click sub verbunden ist

  • VB.NET

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von Coi.

    über meinen Nummernblock z.B. die Taste 1 drücken für das Ereignis welches mit der Button 1_click sub verbunden ist

    Ausgelagert aus Tastenkürzel abfangen funktioniert nur bei leerer form – Bitte keine uralten Threads mit neuen Fragen ausgraben!

    Hallo,

    ich habe hier zusätzlich noch ne Frage:

    Ich habe in meiner Form 3 Buttons zur Auswahl.
    Je nach dem welcher Button gedrückt wird wird im Anschluss bei allen Buttons die .Enabled Funktion auf FALSE gesetzt - was auch so passt da meine quasi keine "zweite" Auswahl haben soll.

    Ich möchte jedoch die Clicks umgehen und statt der Button 1 / 2 / 3 - Click Funktion lieber über meinen Nummernblock z.B. die Taste 1 drücken für das Ereignis welches mit der Button 1_click sub verbunden ist.

    Kann mir hier jemand helfen?

    Keypress? Sendkey?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @Coi Willkommen im Forum. :thumbup:
    Werden Deine Tastan auch wieder ge-Enabled?
    Gib der Form im Designer .KeyPreview = True und nimm Dir das KeyDown- oder das KeyUp-Ereignis.
    Bei KeyPress schlägt AutoRepeat zu, was Du ja wohl nicht haben willst.
    Werte den Tastancode aus und tue, was zu tun ist.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Was ja auch alles schon im Ursprungsthread steht X/
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @RodFromGermany:
    Danke, hat mir sehr geholfen. Werde es nun mit dem KeyUp Ereignis probieren.

    Hätte da noch grundsätzlich ne Frage - kenne die Basics, bin aber KEIN Programmierfreak!:

    Will in meiner Form 42x (!) nacheinander eine Abfrage (eben hier .Keyup) nach Numblock Taste 0/1/2/3 haben - vermutlich in Form einer neuen Form...
    ODER die Abfrage in ein und derselben Form -bezogen jeweils auf eine Textbox, Button oder Ähnliches das nach einer Tasteneingabe abfrägt.
    NACH der Eingabe soll jeweils (vermutlich mit nem Focus) auf die nächste Abfrage gesprungen werden.

    Das Auslesen (hier 0,1,2,3) soll in einen Wert umgewandelt werden bzw. eine Variable (zum Zählen) gespeichert werden.

    Gibt es die Möglichkeit
    * der Abfrage in derselben Form
    * dem Focus setzen auf die jeweils nächste Abfrage?

    Ihr könnt mir auch gerne eine PM schicken. Bin über jede Hilfe dankbar.

    Als ich damals "programmiert" habe hatte ich nur Pascal, Assembler und nen kleinen Teil QBasic ;)
    Hallo Coi

    Der grundsätzliche Ablauf wäre wohl, dass Du das Array/Datatabel durchläufst.

    Ich denke du solltest dir folgendes überlegen:

    Wie möchtest Du die Fragen speichern?
    z.B. in einem Array, in einer Datatable

    Bleibt es bei 42 Fragen?

    Was muss mit dem Total Punkte passieren - sollen diese Ergebnisse gespeichert werden?


    Hier Link für Array - vorallem der Punkt Durchlaufen eines Arrays
    docs.microsoft.com/de-de/dotne…language-features/arrays/

    Hier Link für Datenbank
    vb-paradise.de/index.php/Threa…iten-einfachste-Variante/


    LG Panter
    @Coi Lass das alles in einer Form.
    KeyPreview = True
    Nimm Form_KeyDown oder -Up, pack die Controls, die den Fokus kriegen sollen, in der richtigen Reihenfolge in ein Array:

    VB.NET-Quellcode

    1. Dim ctrls = { Button1, CheckBox2, Button42 }
    merke Dir den Index in einer Klassenvariable MyIndex und zähle ihn hoch, wenn die Aktion erfolgreich war: MyIndex += 1.
    Fokussiere ctrls(MyIndex).Focus()
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo,

    Danke für die Hilfe.
    Also grob kenne ich mich nun aus.

    Ich möchte quasi nen "Start"-Button.
    Danach soll ich jedes Mal gefragt werden, welche Taste ich drücke (0,1,2,3).
    Und das ganze x-mal (hier42).
    Jeweils der Wert für die Eingabe soll gespeichert werden als Zahl:

    Konkret:
    1.Abfrage-Eingabe "A" - z.B. 3 -> Wert "6" in Variable A1(1,1)
    1.Abfrage-Eingabe "B" - z.B. 2 -> Wert "4" in Variable B1(1,1)
    2.Abfrage-Eingabe "A" - z.B. 3 -> Wert "12" in Variable A2(1,2)
    2.Abfrage-Eingabe "B" - z.B. 2 -> Wert "8" in Variable B1(1,2)

    Die jeweiligen A-Werte bzw. B-Werte sollen nach jeder Abfrage addiert werden und gesondert (z.B. Label / Textfeld) upgedatet angezeigt werden.

    Etz. muss ich mich mal mit der Syntax auseinandersetzen und mal "billige" Beispiele erüben ;)
    @Coi Statt zu fragen, welche Taste Du drücken willst, mach Dir einen Dialog mit allen Tasten drauf, da kannst Du dann drauf klicken und das ergebnis per Property an das Hauptprogramm übergeben:
    Dialoge: Instanziierung von Forms und Aufruf von Dialogen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Na,

    im Dialog soll eben NUR 0,1,2,3 als Eingabe dienen.
    Als Wert soll etwas anderes übergeben werden.

    Im ERSTEN Versuch 0 Treffer, 1 Treffer, 2 Treffer oder 3 3 Treffer
    Bei 0 wird zu einem Startwert (integer) ein -Wert addiert
    Bei 1 ein "a"x2 Wert
    Bei 2 ein "a"x4 Wert
    Bei 3 ein "a"x6 Wert

    und das ganze für ZWEI Teilnehmer.
    Daher grundsätzlich zwei Variablen.

    Jeder Teilnehmer hat 21 Durchgänge, also 42 Abfragen.
    Pro Durchgang zuerst
    Teilnehmer A Abfrage
    dann
    Teilnehmer B Abfrage


    Und anstatt alles anzuklicken (per Maus) - außer dem START Button soll eben nur per Nummernblock 0,1,2,3,4 je Durchgang (2 Teilnehmer) per Abfrage / MessageBox abgerufen, übermittelt und zum nächsten Teilnehmer jeweils übergeben werden.

    Danach jeweils aufaddiert und separat das "Zwischenergebnis" angezeigt werden.

    Und nach allen Durchgängen sieht man dann wer mehr hat ;)
    @Coi Ich bin etwas verwirrt.
    Das ganze sieht mir sehr nach einem Dictionary(Of TKey, TValue) aus. Schau mal hier vorbei:
    docs.microsoft.com/de-de/dotne…dictionary-2?view=net-6.0
    dotnetperls.com/dictionary-vbnet
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo Coi

    Ich habe mal ein paar Zeilen geschrieben - vielleicht kannst du ja etwas übernehmen. Das ganze ist noch sehr rudimentär gehalten - Ich würde das ganze in einer Datenbank speichern, Link habe ich Dir ja schon angegeben. Zudem könne man ja die Fragen in einer Textbox auf der Form anzeigen.

    Vielleicht könnste Du uns ja mal deinen Code zeigen.



    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim db(3) As Fragespiel
    3. Private Structure Fragespiel
    4. Public Frage As String
    5. Public Antwort1 As Long
    6. Public Antwort2 As Long
    7. Public Antwort3 As Long
    8. End Structure
    9. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    10. Dim i As Long = 0
    11. 'Zuerst Daten einpflegen - besser wäre es alles in einer Datenbank zu speichen oder xml Datei
    12. db(i).Frage = "Ist die Welt rund?" & vbCr & "1 = heute schon" & vbCr & "2 gestern nicht" & vbCr & "3 heute keine Lust"
    13. db(i).Antwort1 = 10
    14. db(i).Antwort2 = 12
    15. db(i).Antwort3 = 15
    16. i += 1
    17. db(i).Frage = "Ist die Welt blau?" & vbCr & "1 = heute schon" & vbCr & "2 gestern nicht" & vbCr & "3 heute keine Lust"
    18. db(i).Antwort1 = 10
    19. db(i).Antwort2 = 12
    20. db(i).Antwort3 = 15
    21. i += 1
    22. db(i).Frage = "Ist die Welt grün?" & vbCr & "1 = heute schon" & vbCr & "2 gestern nicht" & vbCr & "3 heute keine Lust"
    23. db(i).Antwort1 = 10
    24. db(i).Antwort2 = 12
    25. db(i).Antwort3 = 15
    26. i += 1
    27. db(i).Frage = "Ist die Welt pink?" & vbCr & "1 = heute schon" & vbCr & "2 gestern nicht" & vbCr & "3 heute keine Lust"
    28. db(i).Antwort1 = 10
    29. db(i).Antwort2 = 12
    30. db(i).Antwort3 = 15
    31. Call spielen() ' Kann auch über ein Button in der Form aufgerufen werden
    32. End Sub
    33. Sub spielen()
    34. Dim i As Long = 0
    35. Dim Spieler1 As Long = 0
    36. Dim Spieler2 As Long = 0
    37. Dim Ergebnis As Long = 0
    38. 'Durchgang 1 Spieler 1
    39. For i = 0 To 3
    40. Ergebnis = InputBox(db(i).Frage.ToString, "Spieler 1")
    41. Select Case Ergebnis
    42. Case 1
    43. Spieler1 += db(i).Antwort1
    44. Case 2
    45. Spieler1 += db(i).Antwort2
    46. Case 3
    47. Spieler1 += db(i).Antwort3
    48. End Select
    49. Next
    50. 'Durchgang 1 Spieler 2
    51. MsgBox("Jetzt darf Spieler 2!")
    52. For i = 0 To 3
    53. Ergebnis = InputBox(db(i).Frage.ToString, "Spieler 2")
    54. Select Case Ergebnis
    55. Case 1
    56. Spieler2 += db(i).Antwort1
    57. Case 2
    58. Spieler2 += db(i).Antwort2
    59. Case 3
    60. Spieler2 += db(i).Antwort3
    61. End Select
    62. Next
    63. MsgBox("Spieler 1 hat " & Spieler1.ToString & " Punkte" & vbCr & " Spieler 2 hat " & Spieler2.ToString & " Punkte")
    64. End Sub
    65. End Class
    Ja mit dem Frage.ToString komme ich nicht ganz klar.

    Bei der 0,1,2,3 als Auswahl soll nicht die 0,1,2,3 gespeichert werden sondern jeweils für 0 ein Wert (immer eine NEGATIVE ganze Zahl)
    Für 1 dieselbe Zahl ABER eben POSITIV
    Für 2 der doppelte Wert der Zahl wie bei Auswahl 1
    Für 3 der dreifache Wert der Zahl wie bei Auswahl 1

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Coi“ ()

    Hallo Coi

    Habe meinen Script noch angepasst: - ich gehe davon aus, dass die Spieler nicht dieselbe Frage beantworten.
    Du Kannst bei Punkte immer angeben, wieviel Punkte man bei welcher Frage erhält.
    Wenn Du mehr Fragen möchtest, einfach den Wert Dim db(4) As Fragespielerhöhen und entspechen mehr Fragen einfügen.

    .ToString wandelt die Ausgabe in einen Text um.

    Wichtig: Die Form muss folgende Textboxen haben:

    TB_Spieler, TB_Frage, TB_Antwort1, TB_Antwort2, TB_Antwort3, TB_Antwort und ein Button BT_Start

    Wichtig ist auch das das Ereignis funktioniert - evtl. musst Du doppelklicken auf die TB_Antwort.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim db(4) As Fragespiel
    3. Dim Aktuelle_Frage As Long
    4. Dim Spieler As Long
    5. Dim P_S1 As Long
    6. Dim P_S2 As Long
    7. Private Structure Fragespiel
    8. Public Frage As String
    9. Public Antwort1 As String
    10. Public Antwort2 As String
    11. Public Antwort3 As String
    12. Public Punkte1 As Long
    13. Public Punkte2 As Long
    14. Public Punkte3 As Long
    15. End Structure
    16. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    17. Dim i As Long = 0
    18. 'Zuerst Daten einpflegen - besser wäre es alles in einer Datenbank zu speichen oder xml Datei
    19. db(i).Frage = "Ist die Welt rund?"
    20. db(i).Antwort1 = "heute schon"
    21. db(i).Antwort2 = "gestern nicht"
    22. db(i).Antwort3 = "heute keine Lust"
    23. db(i).Punkte1 = 10
    24. db(i).Punkte2 = 12
    25. db(i).Punkte3 = 7
    26. i += 1
    27. db(i).Frage = "Ist die Welt eckig?"
    28. db(i).Antwort1 = "heute schon"
    29. db(i).Antwort2 = "gestern nicht"
    30. db(i).Antwort3 = "heute keine Lust"
    31. db(i).Punkte1 = 10
    32. db(i).Punkte2 = 12
    33. db(i).Punkte3 = 7
    34. i += 1
    35. db(i).Frage = "Ist die Welt blau?"
    36. db(i).Antwort1 = "heute schon"
    37. db(i).Antwort2 = "gestern nicht"
    38. db(i).Antwort3 = "heute keine Lust"
    39. db(i).Punkte1 = 10
    40. db(i).Punkte2 = 12
    41. db(i).Punkte3 = 7
    42. i += 1
    43. db(i).Frage = "Ist die Welt gelb?"
    44. db(i).Antwort1 = "heute schon"
    45. db(i).Antwort2 = "gestern nicht"
    46. db(i).Antwort3 = "heute keine Lust"
    47. db(i).Punkte1 = 10
    48. db(i).Punkte2 = 12
    49. db(i).Punkte3 = 7
    50. i += 1
    51. db(i).Frage = "Wie fängt man einen blauen Elephanten?"
    52. db(i).Antwort1 = "Mit den Fingern"
    53. db(i).Antwort2 = "Mit der Hand"
    54. db(i).Antwort3 = "Mit dem blauen Elephanten Gewehr?"
    55. db(i).Punkte1 = 1
    56. db(i).Punkte2 = 12
    57. db(i).Punkte3 = 100
    58. Aktuelle_Frage = 0
    59. End Sub
    60. Private Sub BT_Start_Click(sender As Object, e As EventArgs) Handles BT_Start.Click
    61. TB_Spieler.Text = "Spieler 1"
    62. TB_Spieler.BackColor = Color.Red
    63. TB_Frage.Text = db(0).Frage.ToString
    64. TB_Antwort1.Text = db(0).Antwort1.ToString
    65. TB_Antwort2.Text = db(0).Antwort2.ToString
    66. TB_Antwort3.Text = db(0).Antwort3.ToString
    67. TB_Antwort.Select()
    68. Aktuelle_Frage = 1
    69. Spieler = 1
    70. P_S1 = 0
    71. P_S2 = 0
    72. End Sub
    73. Private Sub TB_Antwort_TextChanged(sender As Object, e As EventArgs) Handles TB_Antwort.TextChanged
    74. Dim Punkte_aktuelle_Frage As Long
    75. ''Frage auswerten
    76. Select Case TB_Antwort.Text
    77. Case "1"
    78. Punkte_aktuelle_Frage += db(Aktuelle_Frage - 1).Punkte1
    79. Case "2"
    80. Punkte_aktuelle_Frage += db(Aktuelle_Frage - 1).Punkte2
    81. Case "3"
    82. Punkte_aktuelle_Frage += db(Aktuelle_Frage - 1).Punkte3
    83. Case ""
    84. Return
    85. Case Else
    86. MsgBox("bitte 1,2 oder 3 eingeben")
    87. TB_Antwort.Text = ""
    88. Return
    89. End Select
    90. If Spieler = 1 Then
    91. P_S1 += Punkte_aktuelle_Frage
    92. Else
    93. P_S2 += Punkte_aktuelle_Frage
    94. End If
    95. 'neue Frage stellen - wenn es noch hat..
    96. If UBound(db) > Aktuelle_Frage Then
    97. Aktuelle_Frage += 1
    98. If Spieler = 1 Then
    99. TB_Spieler.Text = "Spieler 2"
    100. TB_Spieler.BackColor = Color.Yellow
    101. TB_Frage.Text = db(Aktuelle_Frage - 1).Frage.ToString
    102. Spieler = 2
    103. Else
    104. TB_Spieler.Text = "Spieler 1"
    105. TB_Spieler.BackColor = Color.Red
    106. TB_Frage.Text = db(Aktuelle_Frage - 1).Frage.ToString
    107. Spieler = 1
    108. End If
    109. TB_Antwort1.Text = db(Aktuelle_Frage - 1).Antwort1.ToString
    110. TB_Antwort2.Text = db(Aktuelle_Frage - 1).Antwort2.ToString
    111. TB_Antwort3.Text = db(Aktuelle_Frage - 1).Antwort3.ToString
    112. TB_Antwort.Text = ""
    113. TB_Antwort.Select()
    114. Else
    115. MsgBox("Spieler 1 hat " & P_S1.ToString & " Punkte" & vbCr & " Spieler 2 hat " & P_S2.ToString & " Punkte")
    116. End If
    117. End Sub
    118. End Class


    aufgrund des Codeumfangs Spoiler hinzugefügt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    im Grunde stimmt das, nur das tatsächlich BEIDE Spieler jeweils pro "Runde" dieselben Fragen bekommen.

    Bei mir sind es keine Fragen sondern "Treffer"...

    also
    "Wie viele Treffer in Runde 1?" Spieler 1 und 2 - jeweils Antowortmöglichkeiten: 0,1,2,3
    "Wie viele Treffer in Runde 2?" Spieler 1 und 2 - jeweils Antowortmöglichkeiten: 0,1,2,3


    Und nach JEDER Runde z.B. in nem Label den aktuellen Zwischenstand für jeden Spieler angeben und nicht per Messagebox einmalig zum Schluss . Ergo nach Runde X wissen dann beide immer woran sie sind...
    So, geändert:

    In Runde EINS werden beiden Spielern die gleiche Frage gestellt.

    Aber ab Runde zwei wird schon nach der Antwort von Spieler 1 zu Runde 3 gewechselt...

    hmmm....

    VB.NET-Quellcode

    1. If UBound(db) > Aktuelle_Frage Then
    2. If Spieler = 1 Then
    3. TB_Spieler.Text = "Spieler 2"
    4. TB_Spieler.BackColor = Color.Yellow
    5. TB_Frage.Text = db(Aktuelle_Frage - 1).Frage.ToString
    6. Spieler = 2
    7. Else
    8. TB_Spieler.Text = "Spieler 1"
    9. TB_Spieler.BackColor = Color.Red
    10. TB_Frage.Text = db(Aktuelle_Frage - 1).Frage.ToString
    11. Spieler = 1
    12. End If
    13. Aktuelle_Frage += 1
    14. TB_Antwort1.Text = db(Aktuelle_Frage - 1).Antwort1.ToString
    15. TB_Antwort2.Text = db(Aktuelle_Frage - 1).Antwort2.ToString
    16. TB_Antwort3.Text = db(Aktuelle_Frage - 1).Antwort3.ToString
    17. TB_Antwort4.Text = db(Aktuelle_Frage - 1).Antwort4.ToString
    18. TB_Antwort.Text = ""
    19. TB_Antwort.Select()
    20. Else
    21. MsgBox("Spieler 1 hat " & P_S1.ToString & " Punkte" & vbCr & " Spieler 2 hat " & P_S2.ToString & " Punkte")
    22. End If



    -----------
    hier noch die Werte für die Runden für Antwort und zu übermittelnder Wert

    VB.NET-Quellcode

    1. db(i).Frage = "Treffer Doppel 1:"
    2. db(i).Antwort1 = "0"
    3. db(i).Antwort2 = "1"
    4. db(i).Antwort3 = "2"
    5. db(i).Antwort4 = "3"
    6. db(i).Punkte1 = -2
    7. db(i).Punkte2 = 2
    8. db(i).Punkte3 = 4
    9. db(i).Punkte4 = 6
    10. i += 1
    11. db(i).Frage = "Treffer Doppel 2:"
    12. db(i).Antwort1 = "0"
    13. db(i).Antwort2 = "1"
    14. db(i).Antwort3 = "2"
    15. db(i).Antwort4 = "3"
    16. db(i).Punkte1 = -4
    17. db(i).Punkte2 = 4
    18. db(i).Punkte3 = 8
    19. db(i).Punkte4 = 12
    20. i += 1
    21. db(i).Frage = "Treffer Doppel 3:"
    22. db(i).Antwort1 = "0"
    23. db(i).Antwort2 = "1"
    24. db(i).Antwort3 = "2"
    25. db(i).Antwort4 = "3"
    26. db(i).Punkte1 = -6
    27. db(i).Punkte2 = 6
    28. db(i).Punkte3 = 12
    29. db(i).Punkte4 = 18
    30. i += 1


    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Hallo Coi

    Wenn beide Spieler dieselbe Fragen haben, musst du die Aktuelle_Frage += 1 in den Block von Spieler 2 eintragen, also 1 Zeilen nach oben verschieben.
    Wenn Du die Punkte immer anzeigen willst, kannst Du ja eine Texbox einfügen, und diesen Wert zuweisen. Z.B. Tb_PunkteSP1.text = P_S1.ToString nachdem der Wert neu berechnet wurde.

    Nachtrag: Wenn die Fragestruktur immer so weiter geht also am Schluss bei Frage Treffer Doppel 21 steht, kann natürlich auch auf die Variable DB verzichtet werden. TB_Frage.Text = "Treffer Doppel: " & Aktuelle_Frage.ToString , Bei den Antworten steht ja sowieso immer dasselbe und Punkte kannst du ja im Case Befehl entsprechnd mit der Aktuelle_Frage berechnen. Ach ja und If UBound(db) > Aktuelle_Frage Then könnte man mit If 22 > Aktuelle_Frage Then ersetzen.

    LG Panter

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Panter“ ()

    Ok, das mit dem Fragenwechsel funktioniert. Die Punkteausgabe haut auch hin - egal ob über ne Textbox oder ein Label.
    Irgendwo laust mich der Affe warum Spieler 2 die falschen Punkte angezeigt bekommt - und das beginnt schon bei Frage 1.

    Also:
    Spieler 1 hat EINEN Treffer -> somit plus zwei Punkte.
    Spieler 2 hat auch EINEN Treffer -> hier werden VIER addiert?

    je höher die Fragen gehen, desto mehr bekommt fälschlicherweise Spieler 2 Punkte.

    Bei Spieler 1 funzt die Rechnung.


    Noch was:
    Gibt es einen bestimmten Grund warum Du LONG anstatt INTEGER (oder sogar SHORT) verwendest?
    Als Bereich wird -500 - +500 ausreichend sein.


    Bei dem Array db(i) muss ich noch schauen ob ich es rausnehmen werde.
    Ab Frage 5 bricht bei mir das Programm ab. i setzt doch lediglich die Anzahl der Fragen? (42), oderß Denn bei den Punkten und Antworten gibt es ja auch nen Bezug hierzu....

    VB.NET-Quellcode

    1. Select Case TB_Antwort.Text
    2. Case "0"
    3. Punkte_aktuelle_Frage += db(Aktuelle_Frage - 1).Punkte1
    4. Case "1"
    5. Punkte_aktuelle_Frage += db(Aktuelle_Frage - 1).Punkte2
    6. Case "2"
    7. Punkte_aktuelle_Frage += db(Aktuelle_Frage - 1).Punkte3
    8. Case "3"
    9. Punkte_aktuelle_Frage += db(Aktuelle_Frage - 1).Punkte4
    10. Case ""
    11. Return
    12. Case Else
    13. MsgBox("Bitte 0,1,2 oder 3 eingeben!")
    14. TB_Antwort.Text = ""
    15. Return
    16. End Select
    17. If Spieler = 1 Then
    18. P_S1 += Punkte_aktuelle_Frage
    19. Else
    20. P_S2 += Punkte_aktuelle_Frage
    21. End If
    22. TB_PunkteSP1.Text = P_S1.ToString
    23. TB_PunkteSP2.Text = P_S2.ToString
    24. 'neue Frage stellen - wenn es noch hat..
    25. If UBound(db) > Aktuelle_Frage Then
    26. If Spieler = 1 Then
    27. TB_Spieler.Text = "Spieler 2"
    28. TB_Spieler.BackColor = Color.Yellow
    29. TB_Frage.Text = db(Aktuelle_Frage - 1).Frage.ToString
    30. Spieler = 2
    31. Aktuelle_Frage += 1
    32. Else
    33. TB_Spieler.Text = "Spieler 1"
    34. TB_Spieler.BackColor = Color.Red
    35. TB_Frage.Text = db(Aktuelle_Frage - 1).Frage.ToString
    36. Spieler = 1
    37. End If


    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Coi: Es wäre schön, wenn Du zukünftig selbständig das VB.NET-CodeTag um Deinen Code herum setzt. Die Moderation hat keine Lust, Dir dauernd hinterherzuräumen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.