Live-Darstellung einer Funktion mit einer DGV

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Yanbel.

    Live-Darstellung einer Funktion mit einer DGV

    Hallo Mit HIlfe eines Timers und einer Datagridview kann ich die Entwicklung einer Funktion aufzeigen(In diesem Fall habe ich 3 Parameter). Allerdings ist der Code sehr Buggie, ich würde mich freuen wenn Jemand was auffällt was man besser machen könnte.


    VB.NET-Quellcode

    1. Dim rowscount As Integer
    2. Dim y As Integer = 0
    3. Dim x As Integer = 1
    4. Private Const viertel As Double = 0.25
    5. Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
    6. Timer2.Interval = 2000
    7. TextBox4.Text = y
    8. TextBox5.Text = x
    9. x += 5 'das ist die erste funktion also 1,6,11,16. usw
    10. y += 1 ' das ist sozusagen die x-achse der funktion mit 0,1,2,3,usw. Wurde einfach als y deklariert.
    11. TextBox6.Text = viertel * CInt(TextBox5.Text) ' das ist der dritte Parameter derFunktion, er viertelt immer den Wert von x
    12. If TextBox5.Text <= TextBox7.Text Then 'textbox 7 gibt den endwert, bis zu den ermittelt wird, soll ja nicht unendlich gehen
    13. Me.DataGridView1.Rows.Add(TextBox4.Text, TextBox6.Text, TextBox5.Text) 'hier werden die Werte der DGV hinzugefügt
    14. If rowscount = Nothing Then
    15. rowscount = 0
    16. End If
    17. DataGridView1.CurrentCell = DataGridView1.Rows(rowscount).Cells(2) 'hier wird die aktuelleste zeile der DGV markiert, was einfach übersichtlicher ist
    18. End If
    19. rowscount += 1
    20. Label8.Text = rowscount
    21. End Sub
    22. Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click, Button9.Click
    23. If sender Is Button7 Then
    24. Timer2.Start()
    25. ElseIf sender Is Button9 Then 'Timer starten und beenden
    26. Timer2.Stop()
    27. End If
    28. End Sub
    Ich würde nach 518 Posts im Forum noch Benennung von Variablen & Controls, Umgang mit Variablentypen, Trennung von GUI und Daten und ein paar andere Dinge mit auf die Liste setzen.

    Hier ein Beispiel. Hoffe mal ich habe alles richtig verstanden was du vorhast:


    Form

    VB.NET-Quellcode

    1. Private Property ResultList As New List(Of Coord)
    2. Private MaxValue As Integer
    3. Private Sub FunctionView_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. FormatDGV()
    5. End Sub
    6. Private Sub FormatDGV()
    7. DgvFunction.Columns.Clear()
    8. DgvFunction.DataSource = Nothing
    9. DgvFunction.AutoGenerateColumns = False
    10. DgvFunction.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None
    11. DgvFunction.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
    12. DgvFunction.AllowUserToResizeColumns = True
    13. DgvFunction.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
    14. DgvFunction.AllowUserToAddRows = False
    15. DgvFunction.AllowUserToDeleteRows = False
    16. DgvFunction.SelectionMode = DataGridViewSelectionMode.FullRowSelect
    17. DgvFunction.MultiSelect = False
    18. DgvFunction.Columns.Add(New DataGridViewTextBoxColumn With {.Name = "CurrentInterval", .DataPropertyName = "CurrentInterval", .Visible = True, .[ReadOnly] = True, .Width = 100, .HeaderText = "Index"})
    19. DgvFunction.Columns.Add(New DataGridViewTextBoxColumn With {.Name = "X", .DataPropertyName = "X", .Visible = True, .[ReadOnly] = True, .Width = 100, .HeaderText = "X"})
    20. DgvFunction.Columns.Add(New DataGridViewTextBoxColumn With {.Name = "QuarterX", .DataPropertyName = "QuarterX", .Visible = True, .[ReadOnly] = True, .Width = 100, .HeaderText = "X / 4"})
    21. DgvFunction.Columns.Add(New DataGridViewTextBoxColumn With {.Name = "Y", .DataPropertyName = "Y", .Visible = True, .[ReadOnly] = True, .Width = 100, .HeaderText = "Y"})
    22. DgvFunction.Columns("CurrentInterval").DefaultCellStyle = New DataGridViewCellStyle With {.Format = "#0", .NullValue = String.Empty, .Alignment = DataGridViewContentAlignment.MiddleLeft}
    23. DgvFunction.Columns("X").DefaultCellStyle = New DataGridViewCellStyle With {.Format = "#0", .NullValue = String.Empty, .Alignment = DataGridViewContentAlignment.MiddleLeft}
    24. DgvFunction.Columns("QuarterX").DefaultCellStyle = New DataGridViewCellStyle With {.Format = "#0.00", .NullValue = String.Empty, .Alignment = DataGridViewContentAlignment.MiddleLeft}
    25. DgvFunction.Columns("Y").DefaultCellStyle = New DataGridViewCellStyle With {.Format = "#0", .NullValue = String.Empty, .Alignment = DataGridViewContentAlignment.MiddleLeft}
    26. End Sub
    27. Private Sub FunctionCourse_Tick(sender As Object, e As EventArgs) Handles FunctionCourse.Tick
    28. DoWork()
    29. End Sub
    30. Private Sub DoWork()
    31. Dim NewCoord As New Coord With {.CurrentInterval = ResultList.Count}
    32. If NewCoord.QuarterX <= MaxValue Then
    33. TxtXValue.Text = NewCoord.X.ToString("#0")
    34. TxtYValue.Text = NewCoord.Y.ToString("#0")
    35. TxtQuarterX.Text = NewCoord.QuarterX.ToString("#0.00")
    36. ResultList.Add(NewCoord)
    37. DgvFunction.DataSource = Nothing
    38. DgvFunction.DataSource = ResultList
    39. LblRowCounter.Text = CStr(ResultList.Count) & " Zeilen"
    40. Else
    41. FunctionCourse.Stop()
    42. End If
    43. End Sub
    44. Private Sub BtnStart_Click(sender As Object, e As EventArgs) Handles BtnStart.Click
    45. If String.IsNullOrWhiteSpace(TxtMaxValue.Text) OrElse Integer.TryParse(TxtMaxValue.Text, MaxValue) Then
    46. MaxValue = 100
    47. TxtMaxValue.Text = CStr(MaxValue)
    48. End If
    49. FunctionCourse.Start()
    50. End Sub
    51. Private Sub BtnStop_Click(sender As Object, e As EventArgs) Handles BtnStop.Click
    52. FunctionCourse.Stop()
    53. End Sub



    Seperate Klasse

    VB.NET-Quellcode

    1. Public Class Coord
    2. Public Property CurrentInterval As Integer
    3. Public ReadOnly Property X As Integer
    4. Get
    5. Return CurrentInterval * 5 + 1
    6. End Get
    7. End Property
    8. Public ReadOnly Property Y As Integer
    9. Get
    10. Return CurrentInterval
    11. End Get
    12. End Property
    13. Public ReadOnly Property QuarterX As Double
    14. Get
    15. Return CDbl(X / 4)
    16. End Get
    17. End Property
    18. End Class


    Controls (da mehrfach hier im Forum gewünscht sogar mit Präfixen :D):
    TxtXValue = TextBox5
    TxtYValue = TextBox4
    TxtQuarterX = TextBox6
    TxtMaxValue = TextBox7
    DgvFunction = DataGridView1
    LblRowCounter = Label8
    BtnStop = Button7
    BtnStart = Button9
    FunctionCourse = Timer2


    Ein Computer wird das tun, was du programmierst - nicht das, was du willst.

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