Ich habe eine while-Schleife, die eine CSV-Datei analysiert und die Variablen in eine Reihe von Arrays einfügt. Dies wird über einen Button auf meinem Hauptformular aufgerufen.Von einer While-Schleife generierte Variablen
Diese Variablen werden für ein Diagramm (das sich in demselben Unterverzeichnis befindet) und auch für ein Datagrid verwendet, das sich in einem separaten Formular befindet.
Das erste Mal, wenn ich auf die Schaltfläche klicke, funktioniert alles wie normal, wenn ich jedoch ein zweites Mal klicke, wird das Datagrid auf dem separaten Formular nicht ausgefüllt, da ich die Variablen verliere.
Also innerhalb der while-Schleife, die die CSV-Datei analysiert, ich habe dies:
frmNumericChart.DataGridView1.Rows.Add(freq, dBu, dbnorm, ScaleFactor)
Ich habe versucht, die Variablen öffentlich zu machen, aber weil sie Arrays sind, und aus der while-Schleife konstruiert, kann ich‘ Sie scheinen sie öffentlich zugänglich zu machen.
Mein Code (der Kürze halber bearbeitet)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim sFile As String = strFileName
' get the minimum and maximum frequencies
Dim Lines As Collections.Generic.IEnumerable(Of String) = File.ReadLines(strFileName)
Dim Line0 As String = Lines.FirstOrDefault
Dim LineN As String = Lines.LastOrDefault
Dim lowestFreq As String() = Line0.Split(New Char() {","c})
Dim highestFreq As String() = LineN.Split(New Char() {","c})
Dim lowFreq As String = lowestFreq(0)
Dim highFreq As String = highestFreq(0)
Dim refFrequencyX = Lines(18)
Dim refFreq As String() = refFrequencyX.Split(New Char() {","c})
Dim ScaleFactor As String = refFreq(1)
Using sr As New StreamReader(sFile)
While Not sr.EndOfStream
Dim sLine As String = sr.ReadLine()
If Not String.IsNullOrWhiteSpace(sLine) Then
sData = sLine.Split(","c)
arrName.Add(sData(0).Trim())
arrValue.Add(sData(1).Trim())
End If
Dim freq As Decimal = sData(0)
Dim dBu As Decimal = sData(1)
Dim voltage As Decimal = sData(1)
' dbnorm - normalise output to 0dBu ref 1kHz
Dim dbnorm = Math.Round(dBu - ScaleFactor, 4)
frmNumericChart.DataGridView1.Rows.Add(freq, dBu, dbnorm, ScaleFactor)
Chart1.Series(0).Points.AddXY(freq, dbnorm)
End While
End Using
' (chart is constructed here)
end sub
Wie kann ich diese globalen Array-Variablen?
Bitte entschuldigen Sie meinen schäbigen Code - ich mache das als ein Hobby und lerne, während ich mitfahre.
Bitte beachten Sie [Referenzvariablen und Objekte an anderer Stelle in einem Formular] (http://stackoverflow.com/q/33248704/1070452) – Plutonix
Ich fürchte, das hilft mir überhaupt nicht. Der Versuch, dem Beispiel auf dieser Seite zu folgen, führt zu einer Menge von Fehlern für mich. – Tony