У меня есть цикл while, который анализирует файл csv и вставляет переменные в ряд массивов. Это называется кнопкой на моей основной форме.Сохранение переменных, сгенерированных циклом while
Эти переменные используются для диаграммы (которая находится в одном и том же суб), а также для datagrid, которая находится в отдельной форме.
В первый раз, когда я нажимаю кнопку, все работает нормально, однако, если я нажму на нее второй раз, datagrid на отдельной форме не будет заполнен, так как я теряю переменные.
Так в то время цикла, который анализирует файл CSV, у меня есть это:
frmNumericChart.DataGridView1.Rows.Add(freq, dBu, dbnorm, ScaleFactor)
Я попытался сделать переменные общественности, однако, поскольку они являются массивами, и построен из цикла в то время как я могу» похоже, делают их общедоступными.
Моего код (отредактированный для краткости)
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
Как я могу сделать этот переменный массив глобальным?
Прошу прощения за мой дрянной код - я делаю это как хобби и обучение, когда я иду.
См. [Справочные переменные и объекты в другом месте в форме] (http://stackoverflow.com/q/33248704/1070452) – Plutonix
Боюсь, что это мне совсем не помогает. Попытка следовать примеру, приведенному на этой странице, приводит к загрузке ошибок для меня. – Tony