Question

I'm new to vb.net and always searching for solution. My forms involved are MainMenu, poCustom, and rdlcForm. All are working well until I got a new look with MDI Forms.

My "New" MainMenu are now containing the poCustom into a Groupbox. Which I searched the code as

    For Each f As Form In Application.OpenForms
        If TypeOf f Is poCustom Then
            f.Activate()
            Return
        End If
    Next

    Dim ch As New poCustom
    ch.TopLevel = False
    ch.Visible = True

    ch.StartPosition = FormStartPosition.Manual
    Dim leftStart As Integer = 1220 - (ch.Width + (SystemInformation.Border3DSize.Width * 2))
    Dim topStart As Integer = 670 - (ch.Height + (SystemInformation.Border3DSize.Height * 2))

    ch.Location = New Point(leftStart, topStart)

    GroupBox1.Controls.Add(ch)

Problem: The rdlcForm(report) cannot get the value of textboxes in poCustom form. Code below:

 Private Sub rptPOView2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim rptParam1(11) As Microsoft.Reporting.WinForms.ReportParameter
    rptParam1(0) = New Microsoft.Reporting.WinForms.ReportParameter("rptDate", poCustom.Label1.Text)
    rptParam1(1) = New Microsoft.Reporting.WinForms.ReportParameter("rptREF", poCustom.Label5.Text)
    rptParam1(2) = New Microsoft.Reporting.WinForms.ReportParameter("rptCompany", poCustom.CompanyName.Text)
    rptParam1(3) = New Microsoft.Reporting.WinForms.ReportParameter("rptQTY", poCustom.txBoxQTY.Text)
    rptParam1(4) = New Microsoft.Reporting.WinForms.ReportParameter("rptUOM", poCustom.txBoxUOM.Text)
    rptParam1(5) = New Microsoft.Reporting.WinForms.ReportParameter("rptDesciption", poCustom.txBoxDesc.Text)
    rptParam1(6) = New Microsoft.Reporting.WinForms.ReportParameter("rptUnit", poCustom.txBoxUnit.Text)
    rptParam1(7) = New Microsoft.Reporting.WinForms.ReportParameter("rptTotal", poCustom.txBoxTotal.Text)
    rptParam1(8) = New Microsoft.Reporting.WinForms.ReportParameter("rptSubTotal", poCustom.Label25.Text)
    rptParam1(9) = New Microsoft.Reporting.WinForms.ReportParameter("rptVAT", poCustom.Label26.Text)
    rptParam1(10) = New Microsoft.Reporting.WinForms.ReportParameter("rptTotalAmount", poCustom.Label27.Text)
    rptParam1(11) = New Microsoft.Reporting.WinForms.ReportParameter("rptRequest", poCustom.Label30.Text)

    ReportViewer1.LocalReport.SetParameters(rptParam1)
    Me.ReportViewer1.RefreshReport()

    TextBox1.Text = poCustom.CompanyName.Text
End Sub

Which happens to work without using MDI Forms. I would like to know the cause of the problem for future use. Thank you in advance!

Was it helpful?

Solution

You are using two different instances of poCustom. ch is the first, and you populate its textboxes. But on the rptPOView2_Load event, you are using the other instance, which contains textboxes that has no value yet. One way to fix the problem is to use poCustom itself and not ch.

poCustom.TopLevel  = False
poCustom.Visible = True

poCustom.StartPosition = FormStartPosition.Manual
Dim leftStart As Integer = 1220 - (ch.Width + (SystemInformation.Border3DSize.Width * 2))
Dim topStart As Integer = 670 - (ch.Height + (SystemInformation.Border3DSize.Height * 2))

poCustom.Location = New Point(leftStart, topStart)

GroupBox1.Controls.Add(poCustom)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top