Solved

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

Posted on 2009-04-15
8
447 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 47

Expert Comment

by:Wayne Taylor (webtubbs)
ID: 24146941
You need to declare the Panel List at class level, ie, outside of any routines.
0
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.

 
LVL 47

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 47

Expert Comment

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

Accepted Solution

by:
Wayne Taylor (webtubbs) earned 500 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

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

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

Suggested Solutions

Most everyone who has done any programming in VB6 knows that you can do something in code like Debug.Print MyVar and that when the program runs from the IDE, the value of MyVar will be displayed in the Immediate Window. Less well known is Debug.Asse…
Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
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…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…

856 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