Solved

Simple question about PictureBoxes

Posted on 2009-04-08
5
544 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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 86

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

[Webinar] Learn How Hackers Steal Your Credentials

Do You Know How Hackers Steal Your Credentials? Join us and Skyport Systems to learn how hackers steal your credentials and why Active Directory must be secure to stop them. Thursday, July 13, 2017 10:00 A.M. PDT

Question has a verified solution.

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

A while ago, I was working on a Windows Forms application and I needed a special label control with reflection (glass) effect to show some titles in a stylish way. I've always enjoyed working with graphics, but it's never too clever to re-invent …
Creating an analog clock UserControl seems fairly straight forward.  It is, after all, essentially just a circle with several lines in it!  Two common approaches for rendering an analog clock typically involve either manually calculating points with…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…

636 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