Je suis nouveau sur ce forum. C'est mon premier article, même si j'ai passé beaucoup de temps ici à chercher des réponses.Référence Form2.DataGridView à partir du code sur Form1
J'ai utilisé VBA dans Excel pendant de nombreuses années, mais j'ai récemment commencé à utiliser VB dans Visual Studio 2015. J'ai créé Form 1 en tant que MDIContainer et j'ai ouvert un autre formulaire à l'intérieur. Ce formulaire (FormXYZ) contient un DataGridView.
Form1 a un MenuStrip et j'essaye actuellement d'écrire le code, quand un de ces éléments de menu est sélectionné, pour peupler la DGV d'un CSV. À ce stade, j'essaie seulement de lire les données et ensuite je vais travailler sur le code pour séparer les chaînes.
je n'ai aucun problème avec la sélection d'un fichier à importer et StreamReader semble lire le fichier, mais aucune donnée ne fait à la DGV.
Lorsque j'ai essayé de mettre le code sur FormXYZ pour un événement de clic de bouton, le DGV a été rempli. Donc, je crois que l'erreur est due à la façon dont je fais référence à la DGV, car le code de l'événement MenuStrip_Click est sur Form1, mais la DGV est sur FormXYZ.
J'apprécierais que quelqu'un puisse indiquer où je me trompe. Mon code est montré ci-dessous.
Merci Tepede
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