• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 183
  • Last Modified:

Problem with GUI not updating in MDI

I have a MDI parent form (frmMain.vb). When I call a form(Import.vb) in it I cant get the interface to update. When I set the form (Import.vb) as the startup form it works just fine.

Here is the code im using:

FORM MAIN (frmMain.vb)
Imports System.Windows.Forms

Public Class frmMain
    Private Sub ImportToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ImportToolStripMenuItem.Click
        Dim frmChild As New Import
        frmChild.MdiParent = Me
        frmChild.Show()
    End Sub
End Class

FORM IMPORT (Import.vb)
Imports System.Configuration.ConfigurationSettings

Public Class Import
    Private excelObj As New Sys.Cap.Data.ExcelObj
    Private formImport As Import

    Private Sub btnImport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImport.Click
        excelObj.PopExcel(formImport)
    End Sub
End Class

EXCEL OBJ (ExcelObj.vb)
Namespace Sys.Cap.Data
    Public Class ExcelObj
        Private formImport As Import

        Public Sub PopExcel(ByRef frm As Import)
            formImport = Import
            formImport.Label1.Text = "TEST"
            formImport.Refresh()
            Exit Sub
        End Sub
    End Class
End Namespace

Any idea why the label updates properly when I set Import.VB as the startup form and doesnt update at all when I set the frmMain.VB as the startup form?
0
bertino12
Asked:
bertino12
1 Solution
 
Mike TomlinsonMiddle School Assistant TeacherCommented:
>>>    see the ALL CAPS remarks in the code <<<

(1) Two comments for your Import class:  

Public Class Import
    Private excelObj As New Sys.Cap.Data.ExcelObj
    ' Private formImport As Import  <------- WHY IS THIS HERE? A FORM DOESN'T USUALLY NEED TO REFERENCE ITSELF!...

    Private Sub btnImport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImport.Click
        excelObj.PopExcel(Me) ' I ASSUME YOU WANT TO PASS A REFERENCE TO THE CURRENT FORM?
    End Sub
End Class

(2) Your passed in variable is called "frm"...but you are using "Import" (a type) instead?

    Public Class ExcelObj
        Private formImport As Import

        Public Sub PopExcel(ByRef frm As Import)
            formImport = frm ' <----- USE THE VARIABLE NAME THAT WAS PASSED IN!
            formImport.Label1.Text = "TEST"
            formImport.Refresh()
            Exit Sub
        End Sub

    End Class

0
 
bertino12Author Commented:
Thank you very much for your time.
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now