0

このフォーラムは初めてです。これは私の最初の投稿ですが、ここでは答えを探すのに多くの時間を費やしています。参照Form2.DataGridView from Form1のコード

私はVBAをExcelで長年使用していましたが、最近Visual Studio 2015でVBを使用し始めました。私はMDIContainerとしてフォーム1を作成しました。このフォーム(FormXYZ)には、DataGridViewが含まれています。

Form1にはMenuStripがあり、現在、これらのメニュー項目の1つが選択されているときに、コードを書き込んでCSVからDGVを読み込もうとしています。この段階では、データを読み込もうとしているだけです。次にコードを操作して文字列を分割します。

Screenshot

私はインポートするファイルを選択して問題がないとのStreamReaderは、ファイルを読み込むように見えますが、データはDGVにそれを行うものではありません。

ボタンクリックイベントのFormXYZにコードを挿入しようとすると、DGVが読み込まれました。私は、DGVを参照している方法によるエラーであると考えています.MenuStrip_ClickイベントのコードはForm1にありますが、DGVはFormXYZにあります。

私が間違っている場所を誰かが指摘できるかどうかは分かります。私のコードは以下の通りです。

おかげTepedeあなたは、あなたがそれの定義は、フォームのLoadであることに起因する表示FormXYZにあなたのインスタンスを失っているように見えます

Imports System.IO 

Public Class Form1 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

    Dim FormXYZ As New FormXYZ() 
    FormXYZ.MdiParent = Me 'Set the Parent Form of the Child window. 
    FormXYZ.Show() 'Display the XYZ form. 
End Sub 
'------------------------------------- 
'StripMenu click command to import CSV 
Public Sub TSMIFileImportCSV_Click(sender As Object, e As EventArgs) Handles TSMIFileImportCSV.Click 

    Dim Filename As String 
    Dim RowValue As String 

    Dim OpenFile As OpenFileDialog = New OpenFileDialog() 

'Open file dialog 
    With OpenFile 
     .Filter = "CSV (*.CSV)|*.csv" 
     .FilterIndex = 1 
     .InitialDirectory = "C:\" 
     .Title = "Open File" 
     .CheckFileExists = False 
    End With 

    If OpenFile.ShowDialog() = DialogResult.OK Then 
     Filename = OpenFile.FileName 
    End If 
    '--------- 

    ' Read CSV file content 
    Dim objReader As StreamReader = New StreamReader(Filename) 
    While objReader.Peek() <> -1 
     RowValue = objReader.ReadLine() 
'Fist column is Boolean, the second should have the data from the CSV file 
     FormXYZ.DataGridView1.Rows.Add(True, RowValue, "Test", "Test") 
    End While 
    objReader.Close() 

End Sub 

答えて

1

。その変数のスコープをクラスレベルに拡張します。

Public Class Form1 

Private FormXYZ As FormXYZ 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

    FormXYZ = New FormXYZ() 
    FormXYZ.MdiParent = Me 'Set the Parent Form of the Child window. 
    FormXYZ.Show() 'Display the XYZ form. 
End Sub 
関連する問題