Inputbox innerhalb einer Schleife

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von Vatter.

    Inputbox innerhalb einer Schleife

    Hallo,

    ich kenne mich leider noch nicht so gut mit VB aus, mein Problem ist folgendes:

    Ich möchte gern eine Schleife in meinem Programm haben, innerhalb dieser sollen Daten eingegeben werden.
    Wie lange die schleife läuft, lasse ich vorher eingeben, dann habe ich eine For.... To... Schleife innerhalb dieser stehen die Inputboxen.
    Fehler werden keine angezeigt, aber wenn ich das Programm laufen lasse, öffnet sich keine Box und ich kann nichts eingeben.
    Habt ihr dazu vielleicht eine Idee?
    Außerdem such ich immer noch nach einer Möglichkeit, jeweils drei eingaben in einer Inputbox zu haben anstatt drei Boxen, welche sich nacheinander öffnen.

    Danke schonmal
    Nia

    ebrithil schrieb:

    mach doch einfach deine ganz persönliche Inputbox, also einfach eine neue Form.


    mfg Ebrithil



    Das hab ich auch schon Probiert, aber da gibt es eben ein Problem dann mit der Schleife, da kommen dann jede Menge Fehlermeldungen.


    @picoflop: Wenn Inputboxen nichts für richtige Programme sind, was nimmt man denn dann?
    Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    'anschließend wird Anzahl der Stützstellen abgefragt
    Dim AnzahlStütz As Byte
    InputBox(AnzahlStütz, , "Bitte geben Sie die Anzahl der Stützstellen ein", , )
    'die Anzahl wird getestet, ob numerisch

    Dim Test
    Test = IsNumeric(AnzahlStütz)
    MsgBox(Test)
    ' Jetzt sollen mit Hilfe eines Counters die Stützstellen mit Werten und Ableitung der Reihe nach eingelsen werden
    Dim counter As Integer
    Dim X() As Integer
    Dim Y() As Integer
    Dim ersteAbl() As Integer
    For counter = 1 To AnzahlStütz Step 1
    'X soll doch hier ein WErt erst zugewiesen werden?
    InputBox(X(counter), "Bitte geben sie X(counter) ein", , , )

    InputBox(Y(counter), "Bitte geben sie Y(counter) ein", , , )

    InputBox(ersteAbl(counter), "Bitte geben sie 1.Abl.(counter) ein", , , )

    Next
    'Jetzt Werte für Stützstellen und eventuelle Ableitungen überprüft und zur Berechnung zugeordnet
    'Dabei: Wenn Ableitung, dann Wert nochmal ohne Ablehnung als nächste Stützstelle, danach weiter mit nächster

    Dim DivDiff(,) As Boolean
    Dim Fkt() As Integer
    Fkt(0) = X(0)
    DivDiff(0, 0) = Y(1)

    If ersteAbl(counter) Is True Then
    DivDiff(0, counter + 1) = ersteAbl(counter)
    DivDiff(counter + 1, counter - 1) = Y(counter)
    DivDiff(counter, counter) = (DivDiff(counter, counter - 1) - DivDiff(counter + 1, counter - 1)) / (X(counter) - X(counter + 1))
    End If
    'Danach alle DivDiff mit DivDiff(i,k)=DivDiff(i,k+1)- DivDiff(i+1,k-1)/Fkt(i)-Fkt(i+k) berechnen



    ' Funktion lautet dann Polynom(x)= D(0,0)+ D(0,1)(X -Fkt(0))+D(0,2)(X-Fkt(0))*(X-Fkt(1))+...+D(0,q)*(X-Fkt(0))*(X-Fkt(1))*...*(X-Fkt(q))
    'Dieses soll per Plotter oder Gnuplot ausgegeben werden
    End Sub






    End Class






    Ich weiß, der Rest passt auch noch nicht ganz, da arbeite ich noch dran, wollte alles dre Reihe nach angehen.
    Wenn ich ne Windows-Form benutze, bekomm ich das nicht ohne weiteres in eines Schleife hinein, das habe ich schon Probiert.
    Sry für diesen Post aber ohne VB-Tags kann man das ja nicht lesen ohne Augenkrebs zu bekommen:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. 'anschließend wird Anzahl der Stützstellen abgefragt
    4. Dim AnzahlStütz As Byte
    5. InputBox(AnzahlStütz, , "Bitte geben Sie die Anzahl der Stützstellen ein", , )
    6. 'die Anzahl wird getestet, ob numerisch
    7. Dim Test
    8. Test = IsNumeric(AnzahlStütz)
    9. MsgBox(Test)
    10. ' Jetzt sollen mit Hilfe eines Counters die Stützstellen mit Werten und Ableitung der Reihe nach eingelsen werden
    11. Dim counter As Integer
    12. Dim X() As Integer
    13. Dim Y() As Integer
    14. Dim ersteAbl() As Integer
    15. For counter = 1 To AnzahlStütz Step 1
    16. 'X soll doch hier ein WErt erst zugewiesen werden?
    17. InputBox(X(counter), "Bitte geben sie X(counter) ein", , , )
    18. InputBox(Y(counter), "Bitte geben sie Y(counter) ein", , , )
    19. InputBox(ersteAbl(counter), "Bitte geben sie 1.Abl.(counter) ein", , , )
    20. Next
    21. 'Jetzt Werte für Stützstellen und eventuelle Ableitungen überprüft und zur Berechnung zugeordnet
    22. 'Dabei: Wenn Ableitung, dann Wert nochmal ohne Ablehnung als nächste Stützstelle, danach weiter mit nächster
    23. Dim DivDiff(,) As Boolean
    24. Dim Fkt() As Integer
    25. Fkt(0) = X(0)
    26. DivDiff(0, 0) = Y(1)
    27. If ersteAbl(counter) Is True Then
    28. DivDiff(0, counter + 1) = ersteAbl(counter)
    29. DivDiff(counter + 1, counter - 1) = Y(counter)
    30. DivDiff(counter, counter) = (DivDiff(counter, counter - 1) - DivDiff(counter + 1, counter - 1)) / (X(counter) - X(counter + 1))
    31. End If
    32. 'Danach alle DivDiff mit DivDiff(i,k)=DivDiff(i,k+1)- DivDiff(i+1,k-1)/Fkt(i)-Fkt(i+k) berechnen
    33. ' Funktion lautet dann Polynom(x)= D(0,0)+ D(0,1)(X -Fkt(0))+D(0,2)(X-Fkt(0))*(X-Fkt(1))+...+D(0,q)*(X-Fkt(0))*(X-Fkt(1))*...*(X-Fkt(q))
    34. 'Dieses soll per Plotter oder Gnuplot ausgegeben werden
    35. End Sub
    36. End Class
    Mein Erstes Tutorial: Erweitertes Arduino Tutorial

    Simpler D&D FTP Uploader: Edge-Load
    Nunja, lauter Inputboxen, die nacheinander aufploppen sind eher nervig als benutzerfreundlich. Auch sind Korrekturen früherer Einträge nicht möglich.
    Vergiß ma für einen Moment die Schleife und baue ne Form mit 3 Textboxen für deine 3 Eingaben (x,Y,...) Daneben ein Button zum Übernehmen und unten drunter ne Listview mit Spalten zur Anzeige der bereits angegebenen Werte.
    Als Schmankerl könntest du dann beim Klick in die Listview die Zeile in die Textboxen zum Bearbeiten übernehmen.
    Der Counter wird dann hinterher ermittelt (Anzahl der Zeilen)

    Fiel Fergnügen
    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    das hört sich super an, nur wie "sage" ich dem PRogramm, dass es die eingegebenen WErte jeweils beim Button klicken, dann dort anzeigt, und wie lasse ich die WErte dann abspeichern?

    hab jetzt so eine For gebastelt (hatte ich anfangs auch mal probiert, aber leider aufgegeben, als es nicht in eine Schleife ging)

    Nia24 schrieb:

    das hört sich super an, nur wie "sage" ich dem PRogramm, dass es die eingegebenen WErte jeweils beim Button klicken, dann dort anzeigt,
    Indem du im Button_Klick-Event die Werte aus den Textboxen in eine Listview.Listviewitemcollection einträgst. dazu bekommt die Listview mehrere Spalten. Jede Spalte entspricht einem Subitem und somit einem textbox.text. Mit dem Beispiel unter de Link solltest du da erstma weiterkommen.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Danke für deinen Hinweis, das hab ich jetzt so hinbekommen.
    Nur wie kann ich jetzt damit meinen counter ermitteln, also wie lasse ich die Anzahl der Zeilen zählen?
    Und kann ich jetzt auch zählen lassen, wie viele Einträge in einer bestimmten Spalte sind?

    Nia24 schrieb:

    Nur wie kann ich jetzt damit meinen counter ermitteln, also wie lasse ich die Anzahl der Zeilen zählen?
    Dashier sollte dir diese Frage beantworten.
    Wenn du eine bestimmte Spalte durchlaufen willst bietet sich die For Each-Schleife an.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    achso und bei den verschiedenen versuchen kommt meist der fehler:

    "... ist kein Member von System.Windows.Form.Listview".
    kann ich irgendwo finden, welche Member es da gibt? Oder muss ich selbst erst einen Member draus machen?
    Geht sowas?
    Und wie kann ich jetzt eigentlich auf die einzelnen eingetragenen Daten zum Berechnen zugreifen?

    Nia24 schrieb:

    kann ich irgendwo finden, welche Member es da gibt?

    Ja, in der MSDN Library findest du alle Klassenbeschreibungen.das
    Ansonsten solltest du dich unbedingt mit Grundlagen beschäftigen. Ein guter Anfang wäre das Galileo Openbook.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup: