[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

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

Posted on 2009-04-15
8
Medium Priority
?
464 Views
Last Modified: 2012-05-06
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
Comment
Question by:jellydeal
  • 4
  • 3
8 Comments
 
LVL 25

Expert Comment

by:Luis Pérez
ID: 24146548
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
 

Author Comment

by:jellydeal
ID: 24146751
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
 
LVL 48

Expert Comment

by:Wayne Taylor (webtubbs)
ID: 24146941
You need to declare the Panel List at class level, ie, outside of any routines.
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 48

Expert Comment

by:Wayne Taylor (webtubbs)
ID: 24146956
BTW, where are the rest of your variables declared (month_count, monthx, yearx, etc)?
0
 

Author Comment

by:jellydeal
ID: 24147135
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
 
LVL 48

Expert Comment

by:Wayne Taylor (webtubbs)
ID: 24147160
That's easily fixed - rename the Panel List variable.
0
 
LVL 48

Accepted Solution

by:
Wayne Taylor (webtubbs) earned 1500 total points
ID: 24147164
...along with all other references to the list object.
0
 

Author Closing Comment

by:jellydeal
ID: 31570356
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

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The debugging module of the VB 6 IDE can be accessed by way of the Debug menu item. That menu item can normally be found in the IDE's main menu line as shown in this picture.   There is also a companion Debug Toolbar that looks like the followin…
Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
Suggested Courses
Course of the Month20 days, left to enroll

872 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question