1

私は奇妙な問題を抱えています、私は小さなプログラムを作成する初心者です リストボックスを使用していくつかの統計を解き、2つのグラフを表示します 問題は、最初の3つのメインリストボックスをtxtファイルに保存して再度ロードし、同じプロセスを作成しようとするとステップラインが正しく描かれているが、X軸のズームは保存前と同じではなく、保存前とは異なる間違った場所に描かれたステップラインのポイントに従って描かれた別の交差線があります。

交差する線に特定の X、Y 値を入力しても、保存する前と同じに見えません

これは保存ボタンのコードです

    Dim i As Integer
    Dim w As IO.StreamWriter
    Dim strFilename As String
    SaveFileDialog1.Filter = "Text Files (*.txt)|*.txt"
    SaveFileDialog1.FileName = "Table"
    SaveFileDialog1.Title = "Save Table"
    SaveFileDialog1.OverwritePrompt = True
    If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        strFilename = SaveFileDialog1.FileName
        w = New IO.StreamWriter(strFilename)
        For i = 0 To lstFrom.Items.Count - 1
            w.WriteLine(lstFrom.Items.Item(i))
        Next
        w.WriteLine("*")
        For i = 0 To lstFrom.Items.Count - 1
            w.WriteLine(lstTo.Items.Item(i))
        Next
        w.WriteLine("**")
        For i = 0 To lstFrom.Items.Count - 1
            w.WriteLine(lstF.Items.Item(i))
        Next
        w.Close()
    End If

これは開くボタンのコードです

    ClearAll()
    Dim strFileName As String
    With OpenFileDialog1
        .Filter = "Text Files (*.txt)|*.txt"
        .Title = "Open Table"
    End With
    If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        strFileName = OpenFileDialog1.FileName
        Dim myreader As New StreamReader(strFileName)
        Dim line As String
        line = myreader.ReadLine()
        Do Until line = "*"
            lstFrom.Items.Add(line)
            line = myreader.ReadLine()
        Loop
        Do Until line = "**"
            lstTo.Items.Add(line)
            line = myreader.ReadLine()
        Loop
        Do Until line = ""
            lstF.Items.Add(line)
            line = myreader.ReadLine()
        Loop
        myreader.Close()
        lstTo.Items.Remove(lstTo.Items(0)) ' that's remove the "*"
        lstF.Items.Remove(lstF.Items(0)) ' That's remove the "**"
        AllWork()
    End If

AllWork() は、プロセス全体とグラフの表示を行う同じメソッドです

これは、開くボタンで破損したチャートを再描画するすべてのコードです

これは ClearAll() メソッドからのものです

    Chart2.Series(0).Points.Clear()
    Chart2.Series(1).Points.Clear()
    Chart2.Series(2).Points.Clear()
    Chart2.Series(3).Points.Clear()
    Chart2.Series(4).Points.Clear()

これは AllWork() メソッドにあります

    Chart2.Series(0).Points.Clear()
    Chart2.Series(1).Points.Clear()
    Chart2.Series(2).Points.Clear()
    Chart2.Series(3).Points.Clear()
    Chart2.Series(4).Points.Clear()

             For i = 0 To lstVariableFrequency.Items.Count - 1
                If lstVariableFrequency.Items(i) = dblHighestVariableFrequency Then
                    dblF1 = lstVariableFrequency.Items(i - 1)
                    dblF2 = lstVariableFrequency.Items(i + 1)
                    dblClassBoundry2 = lstTo.Items(i) - lstFrom.Items(i)
                    dblVersusF = lstFrom.Items(i)




                    Chart2.Series(0).Points.AddXY(lstFrom.Items(i - 1), lstVariableFrequency.Items(i - 1))
                    Chart2.Series(0).Points.AddXY(lstFrom.Items(i), lstVariableFrequency.Items(i))
                    Chart2.Series(0).Points.AddXY(lstFrom.Items(i + 1), lstVariableFrequency.Items(i + 1))

                    Chart2.Series(1).Points.AddXY(lstFrom.Items(i), lstVariableFrequency.Items(i - 1))
                    Chart2.Series(1).Points.AddXY(lstFrom.Items(i + 1), lstVariableFrequency.Items(i))

                    Chart2.Series(2).Points.AddXY(lstFrom.Items(i), lstVariableFrequency.Items(i))
                    Chart2.Series(2).Points.AddXY(lstFrom.Items(i + 1), lstVariableFrequency.Items(i + 1))

                    dblMode = dblVersusF + (dblF2 / (dblF1 + dblF2)) * dblClassBoundry2
                    Exit For
                End If

開くボタンでチャートの x 軸を表す lstfrom リストを設定する

    If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    strFileName = OpenFileDialog1.FileName
    Dim myreader As New StreamReader(strFileName)
    Dim line As String
    line = myreader.ReadLine()
    Do Until line = "*"
        lstFrom.Items.Add(line)
        line = myreader.ReadLine()
    Loop

このコードは、Y 軸を表す lstVariableFrequency リストを設定します

        For i = 0 To lstFrom.Items.Count - 1
            lstL.Items.Add(lstTo.Items(i) - lstFrom.Items(i))
            lstVariableFrequency.Items.Add(lstF.Items(i) / lstL.Items(i))
        Next
4

2 に答える 2

0

ついに私は問題を解決しましたそれは些細なことでした!!! 私はそれを信じていませんチャートを描くコードがこのような変換関数を持っている必要があるというすべての問題

Chart2.Series(0).Points.AddXY(CDbl(lstFrom.Items(i - 1)), CDbl(lstVariableFrequency.Items(i - 1)))

誰かが私の質問を読んでそれを解決しようとしたことを感謝します

于 2013-03-08T05:40:34.497 に答える
0

オープンコードを以下に変更してみてください

ClearAll()
Dim strFileName As String
With OpenFileDialog1
    .Filter = "Text Files (*.txt)|*.txt"
    .Title = "Open Table"
End With
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    strFileName = OpenFileDialog1.FileName
    Dim myreader As New StreamReader(strFileName)
    Dim line As String
    Do Until line = "*"
        line = myreader.ReadLine()
        If line <> "*" Then
            lstFrom.Items.Add(line)
            line = myreader.ReadLine()
        End If
    Loop
    Do Until line = "**"
        line = myreader.ReadLine()
        If line <> "**" Then
            lstTo.Items.Add(line)
            line = myreader.ReadLine()
        End If
    Loop
    Do Until line = ""
        lstF.Items.Add(line)
        line = myreader.ReadLine()
    Loop
    myreader.Close()
    AllWork()
End If

使用しているセパレーター (* および/または **) がデータに混同されているように見えますか?

于 2013-03-07T14:45:40.163 に答える