"Warten" auf Button_Click?

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Denis_Class.

    "Warten" auf Button_Click?

    Hallo zusammen,

    ich habe im Moment ein (Anfänger-)Problem und weiß nicht recht wie ich es lösen kann. Es geht um ein Programm dass verschiedene Anleitungen beinhaltet, die step by step durchgeführt werden sollen. Dafür hab ich zuerst Buttons die das Event starten, eine Textbox die die Schritte anzeigt und mit anderen Buttons möchte ich mich durch die Seiten blättern. Jetzt brauche ich eine Möglichkeit auf den Buttonklick zu "warten".

    Also:

    VB.NET-Quellcode

    1. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Textbox1.Text="Anleitung 1 - Schritt 1"
    3. 'Hier soll es weitergehen nachdem Button 5 gedrückt wird
    4. Textbox2.Text="Anleitung 1 - Schritt 2"
    5. 'Hier soll es weitergehen nachdem Button 5 gedrückt wird
    6. Textbox2.Text="Anleitung 1 - Schritt 3"
    7. End Sub

    und weiter unten:

    VB.NET-Quellcode

    1. Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. Textbox1.Text="Anleitung 2 - Schritt 1"
    3. 'Hier soll es weitergehen nachdem Button 5 gedrückt wird
    4. Textbox2.Text="Anleitung 2 - Schritt 2"
    5. 'Hier soll es weitergehen nachdem Button 5 gedrückt wird
    6. Textbox2.Text="Anleitung 2 - Schritt 3"
    7. End Sub


    mit freundlichen Grüßen,
    GuyF
    Vielen Dank für deine Hilfe,

    das wäre eine Lösung, aber das Problem ist, dass es bei mir um bis zu 40 Step-by-Step Anleitungen geht und ich nicht nur Button5 hab sondern 5-8 die nochmal zu verschiedenen zweigstellen führen sollen. Das wäre mit der Lösung zwar möglich, dann müsste ich aber Kreuz und Quer programmieren :/.

    Gibt es in Visual Basic 2010 nicht eine einfachere Lösung, wie damals beim QBASIC bei den guten alten TextAdventures?
    Hey,

    sich hier mit If-Abfragen durchzuquälen ist der falsche Ansatz. Trenne unbedingt die Daten von der GUI. Halte Deine Daten, also Deine Schritt für Schritt Anleitungen (so nehme ich an) in einer Liste vor.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private _listSteps As New List(Of String)
    3. Private _currentPos As Integer
    4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. 'Hier nur fürs Beispiel ein paar Dummy-Daten
    6. _listSteps.Add("Manual 1 - Step 1")
    7. _listSteps.Add("Manual 2 - Step 2")
    8. _listSteps.Add("Manual 3 - Step 3")
    9. _listSteps.Add("Manual 1 - Step 4")
    10. End Sub
    11. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    12. If _currentPos <= _listSteps.Count - 1 Then
    13. TextBox1.Text = _listSteps(_currentPos)
    14. _currentPos += 1
    15. End If
    16. End Sub
    17. End Class


    Leider erschliesst sich aus Deinem Post nicht die Tiefe Deiner Anforderung. Sicherlich könnte man die Anleitungen auch in einer Klasse kapseln oder auch ein DataSet nutzen, was die Struktur der Anwendung grundlegend bestimmt. Lösungsansätze gibt es viele. Um bessere Vorschläge bieten zu können, müsstest Du uns ein paar mehr Informationen geben.

    Grundsätzlich gilt aber, wie oben gesagt, trenne die Daten von der GUI. Ich hoffe, Du verstehst den Codeausschnitt, den ich Dir gepostet habe. Wenn nicht, dann frag einfach nach.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @GuyF: Bevor Du auch nur eine Zeile Code schreibst, solltest Du mal ganz genau aufschreiben, was Du eigentlich willst, wie der Ablauf sein soll, was passieren soll, wenn..., was nicht passieren soll usw.
    Wenn das ordentlich formuliert ist, dann überleg Dir, wie das in Code gegossen werden kann.
    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!
    Wie SpaceyX schon gesagt solltest du das auf jeden Fall trennen. Evtl. nimmst du mehrere Forms oder ein Tabcontrol. Das wäre die einfache, aber doch die schlechteste Umsetzung. Mit Select kannst du dein jetziges "Level" abfragen und dann einfach ein Usercontrol, was du darauf angepasst hast, in die Form schmeißen und das alte löschen. Und in deinem Usercontrol kannst du alles schön ablaufen lassen wie in einem normalen Programm. Die letzte Methode ähnelt dem Tabcontrol ist aber wesentlich strukturierter.
    Hallo nochmal,

    Vielen Dank für die ganzen Antworten, ich probiere nochmal meinen Anwendungszweck zu schildern:

    Ich arbeite für eine Firma die Druckstraßen herstellt, jetzt haben wir uns gedacht es wäre eine gute Idee, wenn wir für die Azubis (und vielleicht den ein oder anderen Gesellen) ein Programm schreiben dass eine interaktive Anleitung darstellt um gewisse Anbauteile zu montieren.

    Das bedeutet das Programm soll so aussehen, dass man oben Buttons hat (ca. 6) um den Maschinentyp zu wählen. Dann öffnet sich eine neue Form in der man das Anbauteil wählen kann und übergibt dann den Befehl zur Hauptform die Anleitung dafür zu starten. Bei ca. 80% der Anleitungsschritte braucht man bloß einen "Weiter" Button, allerdings wäre es optimal wenn man für gewisse Anleitungsschritte 2 oder sogar 3 Buttons hat, um den User gewisse Fragen zu stellen.

    Beispiel:
    Buttonklick auf Maschine X220 um Form 2 zu öffnen.
    Buttonklick auf Anbauteil XY um die Anleitung zu starten:

    VB.NET-Quellcode

    1. Textbox1.Text="Schraube Gehäuseteil A ab."
    2. 'Weiter
    3. Textbox1.Text="Öffne Klappe B um an die Platine zu gelangen"
    4. 'Weiter
    5. Textbox1.Text="Um welche Revision handelt es sich?" 'Dazu ein Bild daneben
    6. 'Revision 1
    7. Textbox1.Text="Schließe Klappe B"
    8. 'Weiter
    9. Textbox1.Text="Ziehe das beiliegende Kabel durch die rechte Kabelführung"
    10. '..........
    11. 'Revision 2
    12. Textbox1.Text="Stecke das beiliegende Kabel direkt auf die Platine"
    13. 'Weiter
    14. '....................


    usw.
    Mit der Kombination aus 6 verschiedenen Maschinentypen und ca. 10 Bauteilen ergeben sich so ca. 60 interaktive Anleitungen. Ich hoffe ich konnte mein Problem etwas verständlicher schildern.

    mit freundlichen Grüßen,
    GuyF

    GuyF schrieb:

    ein Programm schreiben dass eine interaktive Anleitung darstellt um gewisse Anbauteile zu montieren.
    Oh oh oh.
    Das würde ich niemals interaktiv machen, da muss stur ein Plan hin von Schritt 1 bis Schritt Z, damit solch in Fleisch und Blut übergeht.
    Manch Azubis sind nämlich Neunmalklug und / oder Klugscheißer, die glauben dann, sie könnten es besser und probieren es ohne Anleitung, und das Ergebnis: Es bleiben 7 Schrauben, 2 Splinte, ein Haufen Konterdraht usw. übrig und die Maschine funktioniert trotzdem (nicht).
    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!

    GuyF schrieb:

    Mit der Kombination aus 6 verschiedenen Maschinentypen und ca. 10 Bauteilen ergeben sich so ca. 60 interaktive Anleitungen.
    Und damit ist eindeutig ausgesagt, dass ein vernünftiges Datenmodell her muß.
    DB-Programmierung ohne Datenbank

    Ohne das brauchst du imo nicht weiterzuproggen.

    Erstmal das Datenmodell konzipieren und aufsetzen.
    Wie das präsentiert wird - ob mit Buttons oder mit den Möglichkeiten von vier Views ist eine annere Baustelle, naja nicht eiglich eine annere Baustelle, sondern die aufs genannte Fundament aufzubauende, um im Bild zu bleiben.
    Jo, vor allem würde ich auch die Anleitungen nicht hart ins Programm coden. Wenn sich an einer Maschine was ändert oder eine neue Maschine hinkommt (oder eine wegfällt), dann müsstest du in den Programmcode rein, um das zu ändern. Nicht gut.
    Besser die Datenbankempfehlung vom EdR beachten und bei Datenmodellierung mal mit folgendem Gedanken rumspielen:
    Eine Tabelle Anleitungen (quasi Textbausteine)
    Eine Tabelle Fragen
    Eine Tabelle Ablaufkontrolle (in der Texte und Fragen logisch hintereinander komponiert werden).

    Es werden dann wohl noch ein paar Tabellen dazu kommen (zB für die Maschinen, auf die sich die Anleitungen beziehen sollen), aber das bringt die Datenbänkerei so mit sich :D

    Sowas würde ich als Grundkonzept für angenehm flexibel halten und dann werden da ein paar Forms für gebastelt, wo man seine Texte eingeben/edititieren/löschen kann und wo man in einer anderen Form die Texte in Reihe bringt.
    Ich code nur 'just for fun'! Damit kann ich jeden Mist entschuldigen, den mein Interpreter verdauen muss :D

    @ GuyF - ich hab sowas ähnliches bereits gemacht

    Ich hab auch immer mal wieder Anleitungen benötigt. Da das ganze auch ständig geändert werden musste bzw. neue dazu kamen habe ich eine Eingabemaske erstellt um einen Ablauf zu Erstellen:

    -Eingabe wieviele Schrittabfolgen es gibt
    -Jeder Schritt hat ein Antwortfeld (Indem man zb. eine Teilestückzahl eingibt, einen Barcode einscannen muss oder sonst iwas bestätigen muss) - festlegen, was in dieses Antwortfeld rein darf (String, integer,....)
    -Jeder Schitt hat einen "Weiter" Button (Dieser ist enabled=False)
    -Jeder Schritt hat ein Timerintervall, dass den Button Freigibt (Ich will ja sicherstellen, dass der Mitarbeiter auch alles gelesen und beachtet hat)
    -Zusätzlich die Abfrage ob der Inhalt des Antwortfeldes korrekt ist, übereinstimmt mit Daten, die ich erwarte. (Ist das nicht so ist der "Weiter" Button nicht freigegeben und ein Hinweis erscheint)
    -Jeder Schritt hat 2 Pictureboxen, die variabel befüllt werden können
    -Jeder Schritt hat 2 Labels als Überschiften und 2 RTB (ReadOnly) als "Teilanleitung" in großer Schift.
    -Jeder Schritt bekommt dann noch eine Feste Zuordnung unter der er abgespeichert wird und wieder abgerufen werden kann (ID, Kundenname, Bauteilenummer, Bauteilename, ...)
    -Die ganzen Abfolgen laufen dann über Tabs in einem Tabcontroll. (Die Reiter habe ich -unschön- mit einem Panel verdeckt, damit der User nicht selbstständig die Tabs durchwechseln kann)

    So kann ein Mitarbeiter dann einen Ablauf öffnen und muss diesen dann wie erstellt abarbeiten. Die Daten, die dort entstehen speichere ich dann wieder in eine zweite db ab. (Mitarbeiter, Ablaufname, zeit start, schritt 1 Antwortfeld,........)
    So kann ich genau nachvollziehen, wer wann was und wie gemacht hat.


    #EDIT
    Ich kann Rod nur Zustimmen. Interaktiv zum rumprobieren würde ich das niemans machen.

    Ich habs ganz simpel gelöst:
    Der Mitarbeiter sieht in großem Text und optional mit 2 Bilder was er zu tun hat!
    Zusätzlich will ich von Ihm für jeden Schritt ein Feedback (Meine Textbox) - Manchmal habe ich Schritte wo ein Bauteil in ein anderes montiert wird (Die Bauteile haben einen Barcode) in diesem Fall verlange ich vom Mitarbeiter dass er mir diesen Barcode abscannt!
    Erst dann gibts den weiter Button zum nächsten Teilschritt!
    Durch mein abspeichern jedes Ablaufes kann ich dann auswerten welcher Mitarbeiter am Tag x zur Zeit x wie lange für jeden einzelnen Schritt des Ablaufs x gebraucht hat!
    Bei sowas kannst du meiner Meinung nach "nur die kurze Leine verwenden" dem Mitarbeiter klare Vorgaben machen und "Beweise" für die Korrektheit verlangen. (Noch ein Beispiel. Bei einem Ablauf habe ich das so gemacht. Der Mitarbeiter prüft ein Bauteil visuell. Es bestätigt dann das Ergebniss mit "i.O.", "b.i.O." oder "n.i.O.". Zusätzlich als "Beweis" muss er das Bauteil unter eine am Tisch montierte Webcam legen, die dann die visuell geprüfte Stelle knipst und das Pic speichert. So habe ich hinterher in meiner DB zu so einem Schritt einen Beweis. Der Mitarbeiter sagt, das Bauteil ist gut, das Foto beweist seine Aussage! Oder eben auch was anderes =)

    Ich hab die mal ne kleine PDF zu dem Thema angehängt - ist kurz und knapp aber informativ. Da sind Visutechniken beschrieben, ich finde solche Infos immer recht schön um sich daran entlang zu hangeln!
    Dateien
    • Visutechniken.pdf

      (143,33 kB, 272 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Denis_Class“ () aus folgendem Grund: kleiner Kommentar hinzugefügt