[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 470
  • Last Modified:

VB : 'System.Windows.Forms.Panel' cannot be indexed because it has no default property

Hi,

When Im trying to add something to a runtime created panel I get this error :
'System.Windows.Forms.Panel' cannot be indexed because it has no default property

This only happens if I try to add something outside of the ROUTINE it was created.
I declare the panel in a routine :  Dim days_panel As New List(Of Panel)

Im assuming because its declared in a routine other routines cant see it?
But if I Declare it in the global variables I get the same error occurs for any reference of the panel..

Do I need to declare the default property? Cant seem to find out how!

Thanks for your time.
Barry
0
jellydeal
Asked:
jellydeal
  • 4
  • 3
1 Solution
 
Luis PérezSoftware Architect in .NetCommented:
Mmm... can you post your complete code, please? At least the code in where you declare the panel, and the code in where you try to add anything to that panel.
0
 
jellydealAuthor Commented:
PANEL CREATION:

Private Sub Create_panel()
      Dim month_panel As New List(Of Panel)

        Do Until month_count > 12
            'BUILD MONTH PANEL
            month_panel.Add(New Panel)
            With month_panel(month_count - 1)
                .BorderStyle = BorderStyle.FixedSingle
                .BackColor = Color.Yellow
                .Width = 600
                .Height = 50
                .Location = New Point(10, (month_count * 49))
            End With
            Me.Controls.Add(month_panel(month_count - 1))

            monthx = Month(DateAdd("m", month_count - 1, start_date))
            yearx = Year(DateAdd("m", month_count - 1, start_date))
            pass_date = "01/" & monthx & "/" & yearx
            offset = Get_offset_from_date(pass_date) ' This is the offset to display the information on the grid  -from the left                  
            display_dates()
            display_pattern()
            display_roster()
            month_count = month_count + 1
        Loop
end sub


SUB ROUTINE THAT CAUSES ERROR
'Private Sub display_dates()


        'Month_title.Text = UCase(MonthName(monthx, True))
        'blank_offsets()

        'Remaining Divs with the DATE, should be aligned with the correct Day, thanks to OFFSET DIVS
        'cnt = 1
        'Do Until cnt = grid_length - offset
        ' output = cnt
        ' work_date = DateAdd("d", cnt - 1, pass_date)
        ' If Month(work_date) <> monthx Then output = " "
        ' check_weekend(cnt + offset)
        '=output PANEL FOR DATES
        'cnt = cnt + 1
        'Loop

        Dim day_count As Integer
        day_count = 1
        Do Until cnt = grid_length

            If cnt > offset And Month(work_date) = monthx Then
                day_count = day_count + 1
                work_date = DateAdd("d", cnt - 1, pass_date)
                check_weekend(cnt + offset)
                output = day_count.ToString
            Else
                output = ""
            End If

            'DISPLAY THE CELL
            panel_day(cnt) = New Panel
            lab_day(cnt) = New Label
            panel_day(cnt).BorderStyle = BorderStyle.FixedSingle
            panel_day(cnt).BackColor = Color.Pink
            panel_day(cnt).Width = 23
            panel_day(cnt).Height = 23
            panel_day(cnt).Location = New Point((cnt - 1) * 22, 0)

            month_panel(month_count).Controls.Add(panel_day(cnt)) 'ERROR LINE
'ERROR :'System.Windows.Forms.Panel' cannot be indexed because it has no default property

            lab_day(cnt).Location = New Point(-1, -2)
            lab_day(cnt).MinimumSize = New Size(24, 24)
            lab_day(cnt).Size = New Size(24, 24)
            lab_day(cnt).TextAlign = ContentAlignment.MiddleCenter
            If weekend(cnt) = 0 Then
                lab_day(cnt).BackColor = Color.White
            Else
                lab_day(cnt).BackColor = Color.LightGreen
            End If

            lab_day(cnt).Text = output
            panel_day(cnt).Controls.Add(lab_day(cnt))
            '/ CELL

            cnt = cnt + 1
        Loop

    End Sub
0
 
Wayne Taylor (webtubbs)AstronautCommented:
You need to declare the Panel List at class level, ie, outside of any routines.
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
Wayne Taylor (webtubbs)AstronautCommented:
BTW, where are the rest of your variables declared (month_count, monthx, yearx, etc)?
0
 
jellydealAuthor Commented:
Hi there.

Yes the other variables are declared outside any routine.
But if I move this declaration :
Dim month_panel As New List(Of Panel)

out of the routine then I get the error many errors , firstly :
Error 1 'month_panel' is already declared as 'Friend WithEvents month_panel As System.Windows.Forms.Panel' in this class.
secondly all references to it in the routine now give the error:
Error 3 Class 'System.Windows.Forms.Panel' cannot be indexed because it has no default property.

Im very confused!      
0
 
Wayne Taylor (webtubbs)AstronautCommented:
That's easily fixed - rename the Panel List variable.
0
 
Wayne Taylor (webtubbs)AstronautCommented:
...along with all other references to the list object.
0
 
jellydealAuthor Commented:
Hi Webtubbs..

Thanks for your help..
I actually just found a reference in the .vb file to a panel that no longer exists in design time.
    Friend WithEvents month_panel As System.Windows.Forms.Panel
I deleted this and now it works.
I have also moved the declarations to the class area!

Thanks for your time,
regards
barry
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

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