Solved

Simple question about PictureBoxes

Posted on 2009-04-08
5
531 Views
Last Modified: 2012-05-06
:  Ok, well, I have a trial subscription, but I googled a bunch on this, and nothing that I found worked. Perhaps the experts exchange model is the best for solutions, as required by the workplace.

I am dynamically adding buttons to an inherited form class (the class inherits "form", is maximized, has a background and a picturebox on it to make it look nice ... as simple as it gets).... anyway, I am dynamically adding buttons, and the buttons always show behind the picturebox, even as I use bringToFront, and even if I do this AFTER adding to the control array (after me.controls.add).

I think I'm missing something very fundamental here, but I didn't plan on spending three hours trying to get a label on top of a picturebox, so I'm asking for help.

Thanks
0
Comment
Question by:jj_30
  • 3
5 Comments
 
LVL 2

Author Comment

by:jj_30
ID: 24098203
I cant see my code and it's making me thing that it's missing. Here it is...


Public Class Main 

    Private Sub FormSpecific()

        Me.lblPassword.Parent = Me.picField

        Me.lblPassword.Location = New Point(10, 4)  'relative positioning to the parent

        Me.lblPassword.BringToFront()

        Me.lblPassword.BackColor = Color.Transparent

        Me.picField.BackColor = Color.Transparent

        Me.picField.SendToBack()
 

        For i As Integer = 0 To Me.Controls.OfType(Of GlassButton).Count - 1

            Me.Controls.Item(i).BringToFront()

        Next

    End Sub

    Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        FormSpecific()
 

        'Go to db, get users

        Dim objDataTable As New DataTable

        objDataTable = dbReader("SELECT * FROM TblUsers ORDER BY UserID")
 

        Me.KeyPreview = True
 

        'Dad, mom, etc. Now put some buttons on the main form.

        For i As Integer = 0 To objDataTable.Rows.Count - 1

            With objDataTable(i)

                'draw buttons

                Dim currButton As New GlassButton

                currButton.Text = objDataTable.Rows(i)(1)

                currButton.AvailableOption = IIf(.Item("UserEnabled") = 1, True, False)
 

                Dim currButtonLoc As New Point

                currButtonLoc.X = xStart

                currButtonLoc.Y = yStart + i * (currButton.Height + nButtonSpacing * 2) 'top and bottom margins nButtonSpacing ea.

                currButton.Location = currButtonLoc
 

                Me.Controls.Add(currButton)

            End With

        Next i
 

    End Sub
 

End Class

Open in new window

0
 
LVL 11

Accepted Solution

by:
bmatumbura earned 125 total points
ID: 24098432
0
 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 24098907
This jumps out at me:

        For i As Integer = 0 To Me.Controls.OfType(Of GlassButton).Count - 1
            Me.Controls.Item(i).BringToFront()
        Next

The "i" value is simply going from 0 to Count -1...BUT the there is NO correlation between "i" and the corresponding returned controls position in the Items() collection:

            Me.Controls.Item(i).BringToFront() ' <----- it doesn't make sense to use "i" here

I think you actually wanted this:

        For Each gb As GlassButton In Me.Controls.OfType(Of GlassButton)()
            gb.BringToFront()
        Next

0
 
LVL 2

Author Closing Comment

by:jj_30
ID: 31568076
Why, yes ...   it does help.

Thanks
0
 
LVL 2

Author Comment

by:jj_30
ID: 24100016
Hm, the OfType enumeration doesn't seem to work like I thought. It's linq-related.

me.controls.oftype(of GlassButton) returns something that's hard to parse.

It has <>3__source, <>7__wrapa5, etc. ... Perhaps a little advanced for me today.

Thanks for your help though!
0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Suggested Solutions

If you're writing a .NET application to connect to an Access .mdb database and use pre-existing queries that require parameters, you've come to the right place! Let's say the pre-existing query(qryCust) in Access takes a Date as a parameter and l…
Parsing a CSV file is a task that we are confronted with regularly, and although there are a vast number of means to do this, as a newbie, the field can be confusing and the tools can seem complex. A simple solution to parsing a customized CSV fi…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

758 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

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now