Эта техника графики работает в моей голове, почему не в RL? - PullRequest
0 голосов
/ 06 октября 2011

Хорошо, я пытаюсь создать график, который меняется каждую секунду и просто показывает историю за 3 секунды. В моей голове было бы целесообразно связать его с переменной T (время в секундах), поэтому у меня есть form1, выводящий T в текстовое поле на form2, а затем каждый раз, когда это текстовое поле меняет его, строит график новой диаграммы.

Причина, по которой я использую стремянку, заключается в том, что я хотел, чтобы числа появлялись под точками во время их перемещения.

это вообще имеет какой-то смысл, или я совершенно не в себе?

Imports System.Windows.Forms.DataVisualization.Charting

Public Class Form2

    Dim chart1 As New Chart

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

    End Sub

    Private Sub TextBox11_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox10.TextChanged

        If Form1.T <= 2 Then

            Label1.Visible = False

            TextBox20.Text = TextBox21.Text
            TextBox31.Text = TextBox32.Text

                TextBox21.Text = TextBox22.Text
            TextBox32.Text = TextBox33.Text

            TextBox22.Text = Form1.TextBox10.Text
            TextBox33.Text = Form1.TextBox4.Text

            Dim s1() As Point = {New Point(Form1.T - 2, TextBox20.Text), New Point(Form1.T - 1, TextBox21.Text), New Point(Form1.T, TextBox22.Text)}
            Dim s2() As Point = {New Point(Form1.T - 2, TextBox31.Text), New Point(Form1.T - 1, TextBox32.Text), New Point(Form1.T, TextBox33.Text)}
            For x As Integer = Form1.T - 2 To Form1.T
                chart1.Series(0).Points.Add(x, s1(x).Y)
            Next

            chart1.Series.Add("Series2")

            chart1.Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Line
            chart1.Series(1).ChartType = DataVisualization.Charting.SeriesChartType.Line

            For x As Integer = Form1.T - 2 To Form1.T
                chart1.Series(1).Points.Add(x, s1(x).Y)
            Next

            chart1.Series(0).Label = "PSS"
            chart1.Series(1).Label = "USS"

        End If
    End Sub

End Class

1 Ответ

0 голосов
/ 11 октября 2011

Я бы переместил код из события TextChanged в общедоступную подпрограмму, которая принимает переменную T в качестве параметра в той же форме. Из вашей первой формы вы можете просто позвонить в публичную сабвуфер напрямую, не беспокоясь об использовании скрытого текстового поля и его событий.

Что-то вроде ...

Public Class Form2
     Public sub TimerChange(T as integer)
         ...
     End Sub
End Class

Тогда в основной форме

Dim frm as new Form2
frm.show
frm.TimerChange(T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...