Hallo Zusammen,
Mittels Me.Load erstelle ich mehrere Tabs in einem TabControl. Mit der Funktion CheckAddressesBetweenTabsAndJDEFile möchte ich, nachdem alle Daten geladen worden sind, diese überprüfen und ggf. Änderungen daran vornehmen.
Das Problem das ich habe ist, dass der Aufruf der Sub über das Ereignis Me.Load wohl ausgeführt wird, aber an den DataGridViews der Tabs keine Änderungen erfolgen. Erst wenn ich das entsprechende Tab aktiviere und dann die Sub mittels eines zusätzlichen Button erneut anstosse, wird diese korrekt abgearbeitet.
Ich habe schon ziemlich viel rumprobiert, damit die Sub auch aus Me.Load funzt, bin aber zu keinem brauchbaren Ergebnis gekommen. Hat jemand eine Idee, wo ich noch ansetzen könnte.
frmMain_Load:
Spoiler anzeigen
CheckAddressesBetweenTabsAndJDEFile:
Spoiler anzeigen
Gruß Michael
Mittels Me.Load erstelle ich mehrere Tabs in einem TabControl. Mit der Funktion CheckAddressesBetweenTabsAndJDEFile möchte ich, nachdem alle Daten geladen worden sind, diese überprüfen und ggf. Änderungen daran vornehmen.
Das Problem das ich habe ist, dass der Aufruf der Sub über das Ereignis Me.Load wohl ausgeführt wird, aber an den DataGridViews der Tabs keine Änderungen erfolgen. Erst wenn ich das entsprechende Tab aktiviere und dann die Sub mittels eines zusätzlichen Button erneut anstosse, wird diese korrekt abgearbeitet.
Ich habe schon ziemlich viel rumprobiert, damit die Sub auch aus Me.Load funzt, bin aber zu keinem brauchbaren Ergebnis gekommen. Hat jemand eine Idee, wo ich noch ansetzen könnte.
frmMain_Load:
VB.NET-Quellcode
- Private Sub frmMain_Load(sender As Object, e As System.EventArgs) _Handles Me.Load
- .
- .
- .
- ' Load tabs from CONFIG folder
- ReadExistingTabFiles(SAVE_PATH_CONFIG, TabFiles)If TabFiles.Count > 0 Then AddPLCSpyTabsOnFormLoad(TabFiles)
- With dgvTagBrowser.Columns.Add("Index", "Index")
- .Columns.Add("Name", "Name").Columns.Add("Type", "Type")
- .Columns.Add("Address", "Address")Dim Check As New DataGridViewCheckBoxColumn()
- With Check
- .HeaderText = "Check"
- .Name = "Check"
- End With
- .Columns.Add(Check).Columns.Add("Value", "Value")
- .Columns(dgvTagBrowserColumns.Value).Visible = False
- End With
- ' Load *.jde-file if exists
- If System.IO.File.Exists(SAVE_PATH_CONFIG & FILENAME_JDE) Then
- If LoadJDELoad(SAVE_PATH_CONFIG & FILENAME_JDE) Then
- FillDataGridViewTagBrowser()
- End If
- .
- .
- .
- CheckAddressesBetweenTabsAndJDEFile()
- End Sub
CheckAddressesBetweenTabsAndJDEFile:
VB.NET-Quellcode
- Sub CheckAddressesBetweenTabsAndJDEFile()For Each tp As TabPage In tcPLCSpy.TabPages
- If tp.Text = tpPLCSpyPreSelection.Text Then Exit ForDim dt As DataTable = DataTableDictionary.Item(tp.Tag)
- Dim dgvTab As DataGridView = tp.Controls("dgv" & tp.Text)For Each dgvrTab As DataGridViewRow In dgvTab.Rows
- dgvrTab.Cells(dgvPLCSpyOutputColumns.Name).Style.BackColor = Color.Red
- If Not dgvrTab.Cells(dgvPLCSpyOutputColumns.Address).Style.BackColor = Color.Orange ThendgvrTab.Cells(dgvPLCSpyOutputColumns.Address).Style.BackColor = Color.Red
- End If
- NextFor Each dgvrTab As DataGridViewRow In dgvTab.Rows
- For Each dgvrJDE As DataGridViewRow In dgvTagBrowser.Rows
- If dgvrTab.Cells(dgvPLCSpyOutputColumns.Name).Value = dgvrJDE.Cells(dgvTagBrowserColumns.Name).Value ThendgvrTab.Cells(dgvPLCSpyOutputColumns.Name).Style.BackColor = Color.White
- If dgvrTab.Cells(dgvPLCSpyOutputColumns.Address).Value = dgvrJDE.Cells(dgvTagBrowserColumns.Address).Value Then
- If Not dgvrTab.Cells(dgvPLCSpyOutputColumns.Address).Style.BackColor = Color.Orange ThendgvrTab.Cells(dgvPLCSpyOutputColumns.Address).Style.BackColor = Color.White
- End IfElseIf MessageBox.Show("Value from tab is different with value from *.jde-file." & vbCrLf & vbCrLf & vbCrLf & _
- "Active tab:" & vbTab & vbTab & tp.Text & vbCrLf & vbCrLf & _"Value from tab:" & vbTab & vbTab & dgvrTab.Cells(dgvPLCSpyOutputColumns.Address).Value & vbCrLf & _
- "Value from *.jde-file:" & vbTab & dgvrJDE.Cells(dgvTagBrowserColumns.Address).Value & vbCrLf & vbCrLf & vbCrLf & _"Would you like to replace the value with value from *.jde-file?", _
- "Replace value", _MessageBoxButtons.YesNo, _
- MessageBoxIcon.Question, _
- MessageBoxDefaultButton.Button1) = Windows.Forms.DialogResult.Yes ThendgvrTab.Cells(dgvPLCSpyOutputColumns.Address).Value = dgvrJDE.Cells(dgvTagBrowserColumns.Address).Value
- dgvrTab.Cells(dgvPLCSpyOutputColumns.Address).Style.BackColor = Color.Orange
- End If
- End If
- Next
- Next
- NextEnd Sub
Gruß Michael