Button mehrfach belegen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Myrax.

    Button mehrfach belegen

    Hallo Freunde des gepflegten Code's,

    ich bin absoluter Frischling im Bereich VB! Bisher habe ich nur mit HTML, ganz klein wenig Javascript und PHP zu tun gehabt.

    ich möchte ein kleines Abfragefenster zusammenstellen. Dabei wird in einer Textbox eine Frage gestellt, die per Ja/Nein Button beantwortet wird! Nachdem ein Button geklickt wurde, soll im Textbox die nächste Frage kommen...

    Bisher habe ich folgendes gemacht: Die Textbox startet bereits mit der 1. Frage: Ergeben 1+2 = 5 ?

    Bei Click auf Nein, kommt auch schon die nächste Frage in der Texbox. Ich kann dann aber nicht mehr den 2. Click für den "Nein Button" deklarieren...

    Am liebsten hätte ich es ja, dass die Fragen aus einer Excel Tabelle o.ä. ausgelesen werden, da ich die Fragen wesentlich komplexer bauen möchte und auch im nachhinein mit mehr Inhalt füllen möchte! So würde mir die Einbindung weiterer Fragen und Antworten vereinfachen... Wie könnte ich denn so etwas realisieren?!

    Mein Code sieht bisher so aus:

    Quellcode

    1. Public Class Open_Totalausfall
    2. Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    3. End Sub
    4. Private Sub Nein_01_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Nein_01.Click
    5. Fragebox.Text = "Richtig! Ergeben 2+3 = 6 ?"
    6. End Sub
    7. End Class


    Besten dank im voraus!
    Mach es im etwa so:

    VB.NET-Quellcode

    1. Dim questions As new Dictionary(Of String, Boolean)
    2. questions.Add("Frage", True)
    3. questions.Add("Frage", True)
    4. questions.Add("Frage", False)
    5. questions.Add("Frage", True)
    6. questions.Add("Frage", False)
    7. static question as Integer = 0
    8. ' Frage stellen / beantworten
    9. ' Frage abrufen:
    10. questions(id).Key
    11. 'Antwort
    12. questions(id).Value
    13. question += 1


    Dieser Code funktioniert nicht ganz, selbstarbeit wird gefordert ;)

    Du kannst in dem Dictionary alle Fragen stellen.
    Mit einer Lösung.

    Der static wird nur einmal instanziiert, dannach hast du ihn wieder, musst dafür also keine private globale variable erstellen.

    Der Code kommt so im etwa in die Button Click (Das Dictionary als private property in das form load event)


    Probier da mal ein wenig rum. Bei Dictionary müsste dir die Intellisence auch sagen, welche DLL für das fehlt, und bietet an es direkt einzufügen.

    EDIT:

    Grade gesehen. das Ding kannst du net über Integer (Id) ansprechen, nur über Key.

    Versuche mal mit ner List(Of String) und ner List(Of Boolean) das zu realisieren,
    oder du schreibst dir einen Typ Question, (mit den Membern Question As String und Answer As Boolean)
    den du dann mit List(Of Question) Handlest...

    Das geht dann auf jeden Fall.
    Leg ne Klasse an (z.B. mit dem Namen Question). Eine Question Enthält Frage und die Antwort, beides als String.
    Danach legst du eine Queue(Of Question) an. Hier fügst du am starten (z.B. im Form_Load oder im Konstruktor) die Fragen hinzu. Das machst du mit Queue.Enqueue(Question)
    Im Button-Click lässt du dann die nächste Frage laden ohne es zu entfernen. Das machst du mit Queue..Peek()
    Du kriegst ein Objekt vom Typen Question zurück. Nun kannst du gucken, ob die Antwort richtig ist. Wenn ja, entfernst du einfach mit Queue.Dequeue() das aktuelle Objekt. Nun kannst du die nächste Frage stellen.

    Aus Excel lesen kannst du z.B. indem du deine Tabelle als CSV exportierst.
    PS: msdn.microsoft.com/de-de/libra…em.collections.queue.aspx
    Oha, ich dachte in meinen code muss einfach nur ein paar Codeschnippsel mit eingebaut werden, um die Button mehrmals klicken zu können, aber anscheinend war ich ja auf dem komplett falschen Weg...

    Okay fangen wir anders an... welches VB Buch für Anfänger könnt ihr mir empfehlen?! ?(

    Best-Of-Me schrieb:

    ein paar Codeschnippsel
    So was?

    VB.NET-Quellcode

    1. Private index As Integer = 0
    2. Private maxIndex As Integer = 10
    3. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    4. MeineFrage(index)
    5. index += 1
    6. If index >= maxIndex Then
    7. index = 0
    8. End If
    9. End Sub
    10. Private Sub MeineFrage(index As Integer)
    11. ' halt was tun
    12. End Sub
    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!