GrnEyedDvl
Member
- Joined
- Dec 24, 2009
- Messages
- 6
- Programming Experience
- Beginner
I am building a custom user control (button) that works fine with the added properties, with one exception. It fails to load the image selected via the new property when the form starts up, but all the mouse events (click, enter, leave, etc)
Basically there are several new properties:
Orientation, can be one of the following:
UpperLeft
UpperRight
LowerLeft
LowerRight
These will be one of several colors, currently I have 3.
MainColor
MouseColor
ClickColor
For the mouse events I do something like this to swap out the images. I can stick all that in a module later and just pull the variable but for how this is fine.
That works just fine, and then on MouseLeave it sets it back to the main color selected via the property sheet in design mode. All of the mouse events work just fine.
The problem is here:
That red line is the one that loads the image when you place the control on a form, and is also the image that loads when the application is started.
If I replace that line with an if statement to similar to the one for MouseEnter above, it will not pull the info and select the proper image when the application loads. It loads a blank image, when I mouse over it it puts the proper mouse over image, and when I leave it loads the proper main image.
Any ideas? Building controls is fairly new for me so I am sure this is pretty obvious, but its eluding me.
Basically there are several new properties:
Orientation, can be one of the following:
UpperLeft
UpperRight
LowerLeft
LowerRight
These will be one of several colors, currently I have 3.
MainColor
MouseColor
ClickColor
For the mouse events I do something like this to swap out the images. I can stick all that in a module later and just pull the variable but for how this is fine.
VB.NET:
Private Sub Elbo_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseEnter
Me.ForeColor = colTextMouseColor
'detect MouseOver color
'Orientation UpperLeft
If Me.Orientation = ElboOrientation.UpperLeft Then
'Blue section
If Me.MouseOverColor = ElboColor.Blue Then
imgMouseOver = My.Resources.UL_Blue
ElseIf Me.MouseOverColor = ElboColor.LightBlue Then
imgMouseOver = My.Resources.UL_LightBlue
ElseIf Me.MouseOverColor = ElboColor.RoyalBlue Then
imgMouseOver = My.Resources.UL_RoyalBlue
End If
'Orientation UpperRight
ElseIf Me.Orientation = ElboOrientation.UpperRight Then
'Blue section
If Me.MouseOverColor = ElboColor.Blue Then
imgMouseOver = My.Resources.UR_Blue
ElseIf Me.MouseOverColor = ElboColor.LightBlue Then
imgMouseOver = My.Resources.UR_LightBlue
ElseIf Me.MouseOverColor = ElboColor.RoyalBlue Then
imgMouseOver = My.Resources.UR_RoyalBlue
End If
'orientation LowerLeft
ElseIf Me.Orientation = ElboOrientation.LowerLeft Then
'Blue section
If Me.MouseOverColor = ElboColor.Blue Then
imgMouseOver = My.Resources.BL_Blue
ElseIf Me.MouseOverColor = ElboColor.LightBlue Then
imgMouseOver = My.Resources.BL_LightBlue
ElseIf Me.MouseOverColor = ElboColor.RoyalBlue Then
imgMouseOver = My.Resources.BL_RoyalBlue
End If
'orientation LowerRight
ElseIf Me.Orientation = ElboOrientation.LowerRight Then
'Blue section
If Me.MouseOverColor = ElboColor.Blue Then
imgMouseOver = My.Resources.BR_Blue
ElseIf Me.MouseOverColor = ElboColor.LightBlue Then
imgMouseOver = My.Resources.BR_LightBlue
ElseIf Me.MouseOverColor = ElboColor.RoyalBlue Then
imgMouseOver = My.Resources.BR_RoyalBlue
End If
End If
Me.BackgroundImage = imgMouseOver
Me.ForeColor = colTextMouseColor
End Sub
That works just fine, and then on MouseLeave it sets it back to the main color selected via the property sheet in design mode. All of the mouse events work just fine.
The problem is here:
VB.NET:
Public Sub New()
Me.Size = New Point(177, 55)
Me.FlatStyle = Windows.Forms.FlatStyle.Flat
Me.FlatAppearance.BorderSize = 0
Me.FlatAppearance.BorderColor = Color.Black
Me.FlatAppearance.MouseDownBackColor = Color.Transparent
Me.FlatAppearance.MouseOverBackColor = Color.Transparent
Me.BackColor = Color.Transparent
Me.BackgroundImageLayout = Windows.Forms.ImageLayout.Center
Me.TextAlign = ContentAlignment.BottomCenter
'need to determine color at form load ??
[COLOR="Red"]Me.BackgroundImage = My.Resources.UL_LightBlue[/COLOR]
End Sub
That red line is the one that loads the image when you place the control on a form, and is also the image that loads when the application is started.
If I replace that line with an if statement to similar to the one for MouseEnter above, it will not pull the info and select the proper image when the application loads. It loads a blank image, when I mouse over it it puts the proper mouse over image, and when I leave it loads the proper main image.
Any ideas? Building controls is fairly new for me so I am sure this is pretty obvious, but its eluding me.