By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,344 Members | 1,142 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,344 IT Pros & Developers. It's quick & easy.

Label_Paint event causing a continuous loop. Help needed.

P: n/a
I am having problems with a Label_Paint event causing a continuous loop.
Here is an explanation of the code.

I right click on a label and a context menu pops up.

I then select a menu item named "cmLSolidColor". Here is its code:

Private Sub cmLSolidColor_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmLSolidColor.Click

LabelBackColorSolid()

End Sub

It calls a sub named "LabelBackColorSolid". Here is its code:

Private Sub LabelBackColorSolid()

If ColorDialog1.ShowDialog() = DialogResult.OK Then

If bCMTrigger = True Then

If strCMTrigger = "lblP1JoyUp" Then

lblP1JoyUp.BackColor = (ColorDialog1.Color)

ElseIf strCMTrigger = "lblP1JoyRight" Then

lblP1JoyRight.BackColor = (ColorDialog1.Color)

End if

End if

End if

End Sub

The problem is that the label I'm right clicking on has a Label_Paint event.
Execution goes to the line "LabelBackColorSolid" in the cmlSolidColor_Click
event properly. Then It enters the Private Sub, "LabelBackColorSolid". When
it attempts to read the first line, "If ColorDialog1..." and launch the
dialog box, It immediately triggers the Label_Paint event and enter a
continuous loop. If I pause it in the debugger and then continue the loop
ends, the dialog box pops up, I pick my color, it applies it and all is
well. What can I do to stop this behavior. Is there a way to force it now to
do the Label_Paint event at this point, say, until the end of the
"LabelBackColorSolid" sub is complete?

Thank you,

John
Nov 20 '05 #1
Share this Question
Share on Google+
6 Replies


P: n/a
No ideas here?

John

"jcrouse" <me> wrote in message
news:uO**************@TK2MSFTNGP11.phx.gbl...
I am having problems with a Label_Paint event causing a continuous loop.
Here is an explanation of the code.

I right click on a label and a context menu pops up.

I then select a menu item named "cmLSolidColor". Here is its code:

Private Sub cmLSolidColor_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmLSolidColor.Click

LabelBackColorSolid()

End Sub

It calls a sub named "LabelBackColorSolid". Here is its code:

Private Sub LabelBackColorSolid()

If ColorDialog1.ShowDialog() = DialogResult.OK Then

If bCMTrigger = True Then

If strCMTrigger = "lblP1JoyUp" Then

lblP1JoyUp.BackColor = (ColorDialog1.Color)

ElseIf strCMTrigger = "lblP1JoyRight" Then

lblP1JoyRight.BackColor = (ColorDialog1.Color)

End if

End if

End if

End Sub

The problem is that the label I'm right clicking on has a Label_Paint event. Execution goes to the line "LabelBackColorSolid" in the cmlSolidColor_Click event properly. Then It enters the Private Sub, "LabelBackColorSolid". When it attempts to read the first line, "If ColorDialog1..." and launch the
dialog box, It immediately triggers the Label_Paint event and enter a
continuous loop. If I pause it in the debugger and then continue the loop
ends, the dialog box pops up, I pick my color, it applies it and all is
well. What can I do to stop this behavior. Is there a way to force it now to do the Label_Paint event at this point, say, until the end of the
"LabelBackColorSolid" sub is complete?

Thank you,

John

Nov 20 '05 #2

P: n/a
John,

What is the code in your label paint event? I cannot see how the continuous
loop is happening from what you posted.
do the Label_Paint event at this point, say, until the end of the
"LabelBackColorSolid" sub is complete?

This will temporarily turn off the paint event, but something seems amiss to
have to do this...

Private Sub LabelBackColorSolid()
RemoveHandler Label1.Paint, AddressOf Label1_Paint ' Stop handling
events.

If ColorDialog1.ShowDialog() = DialogResult.OK Then
' do stuff
End If

AddHandler Label1.Paint, AddressOf Label1_Paint
End Sub

HTH,
Greg

"jcrouse" <me> wrote in message
news:e1**************@TK2MSFTNGP09.phx.gbl... No ideas here?

John

"jcrouse" <me> wrote in message
news:uO**************@TK2MSFTNGP11.phx.gbl...

Nov 20 '05 #3

P: n/a
Add a module level Boolean to state that you are in the
LabelBackColorSolid function. Check this variable in the Label_Paint
event. If set exit sub.

HTH

David

"jcrouse" <me> wrote in message
news:e1**************@TK2MSFTNGP09.phx.gbl:
No ideas here?

John

"jcrouse" <me> wrote in message
news:uO**************@TK2MSFTNGP11.phx.gbl...
I am having problems with a Label_Paint event causing a continuous
loop.
Here is an explanation of the code.

I right click on a label and a context menu pops up.

I then select a menu item named "cmLSolidColor". Here is its code:

Private Sub cmLSolidColor_Click(ByVal sender As System.Object, ByVal e
As
System.EventArgs) Handles cmLSolidColor.Click

LabelBackColorSolid()

End Sub

It calls a sub named "LabelBackColorSolid". Here is its code:

Private Sub LabelBackColorSolid()

If ColorDialog1.ShowDialog() = DialogResult.OK Then

If bCMTrigger = True Then

If strCMTrigger = "lblP1JoyUp" Then

lblP1JoyUp.BackColor = (ColorDialog1.Color)

ElseIf strCMTrigger = "lblP1JoyRight" Then

lblP1JoyRight.BackColor = (ColorDialog1.Color)

End if

End if

End if

End Sub

The problem is that the label I'm right clicking on has a Label_Paint

event.
Execution goes to the line "LabelBackColorSolid" in the

cmlSolidColor_Click
event properly. Then It enters the Private Sub, "LabelBackColorSolid".

When
it attempts to read the first line, "If ColorDialog1..." and launch
the
dialog box, It immediately triggers the Label_Paint event and enter a
continuous loop. If I pause it in the debugger and then continue the
loop
ends, the dialog box pops up, I pick my color, it applies it and all
is
well. What can I do to stop this behavior. Is there a way to force it
now

to
do the Label_Paint event at this point, say, until the end of the
"LabelBackColorSolid" sub is complete?

Thank you,

John


Nov 20 '05 #4

P: n/a
Here is the OnPaint code:

Private Sub lblP1JoyUp_Paint(ByVal sender As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles lblP1JoyUp.Paint

If lblP1JoyUp.Visible = True Then

Dim myFontBrush As New SolidBrush(lblP1JoyUp.ForeColor)

If mnuHLabel.Checked = True Then

If bFlipText = False Then

lblP1JoyUp.Text = ""

ElseIf bFlipText = True Then

Dim sf As New StringFormat

sf.Alignment = StringAlignment.Center

sf.LineAlignment = StringAlignment.Center

lblP1JoyUp.Text = ""
e.Graphics.TranslateTransform(lblP1JoyUp.ClientSiz e.Width,
lblP1JoyUp.ClientSize.Height)

e.Graphics.RotateTransform(180)

e.Graphics.DrawString("P1JoyUp", lblP1JoyUp.Font,
myFontBrush, RectangleF.op_Implicit(lblP1JoyUp.ClientRectangle) , sf)

End If

ElseIf mnuVLabel.Checked = True Then

If bFlipText = False Then

Dim y As Integer =
CInt(e.Graphics.MeasureString("lblP1JoyUp", lblP1JoyUp.Font).Width)

Dim x As Integer =
CInt(e.Graphics.MeasureString("lblP1JoyUp", lblP1JoyUp.Font).Height)

lblP1JoyUp.Text = ""
e.Graphics.TranslateTransform((lblP1JoyUp.ClientSi ze.Width - x) \ 2,
(lblP1JoyUp.ClientSize.Height - y) \ 2)

e.Graphics.RotateTransform(270)

e.Graphics.DrawString("P1JoyUp", lblP1JoyUp.Font,
myFontBrush, -y, 0)

ElseIf bFlipText = True Then

Dim y As Integer =
CInt(e.Graphics.MeasureString("lblP1JoyUp", lblP1JoyUp.Font).Width)

Dim x As Integer =
CInt(e.Graphics.MeasureString("lblP1JoyUp", lblP1JoyUp.Font).Height)

lblP1JoyUp.Text = ""
e.Graphics.TranslateTransform((lblP1JoyUp.ClientSi ze.Width + x) \ 2,
(lblP1JoyUp.ClientSize.Height + y) \ 2)

e.Graphics.RotateTransform(90)

e.Graphics.DrawString("P1JoyUp", lblP1JoyUp.Font,
myFontBrush, -y, 0)

End If

End If

myFontBrush.Dispose()

End If

End Sub


"Greg Burns" <greg_burns@DONT_SPAM_ME_hotmail.com> wrote in message
news:%2****************@TK2MSFTNGP12.phx.gbl...
John,

What is the code in your label paint event? I cannot see how the continuous loop is happening from what you posted.
do the Label_Paint event at this point, say, until the end of the
"LabelBackColorSolid" sub is complete?

This will temporarily turn off the paint event, but something seems amiss

to have to do this...

Private Sub LabelBackColorSolid()
RemoveHandler Label1.Paint, AddressOf Label1_Paint ' Stop handling
events.

If ColorDialog1.ShowDialog() = DialogResult.OK Then
' do stuff
End If

AddHandler Label1.Paint, AddressOf Label1_Paint
End Sub

HTH,
Greg

"jcrouse" <me> wrote in message
news:e1**************@TK2MSFTNGP09.phx.gbl...
No ideas here?

John

"jcrouse" <me> wrote in message
news:uO**************@TK2MSFTNGP11.phx.gbl...


Nov 20 '05 #5

P: n/a
But, it will keep looping back into the OnPaint sub and then out again.

John

"David Williams , VB.NET MVP" <da********************@earthlink.net> wrote
in message news:e8**************@TK2MSFTNGP11.phx.gbl...
Add a module level Boolean to state that you are in the
LabelBackColorSolid function. Check this variable in the Label_Paint
event. If set exit sub.

HTH

David

"jcrouse" <me> wrote in message
news:e1**************@TK2MSFTNGP09.phx.gbl:
No ideas here?

John

"jcrouse" <me> wrote in message
news:uO**************@TK2MSFTNGP11.phx.gbl...
I am having problems with a Label_Paint event causing a continuous
loop.
Here is an explanation of the code.

I right click on a label and a context menu pops up.

I then select a menu item named "cmLSolidColor". Here is its code:

Private Sub cmLSolidColor_Click(ByVal sender As System.Object, ByVal e
As
System.EventArgs) Handles cmLSolidColor.Click

LabelBackColorSolid()

End Sub

It calls a sub named "LabelBackColorSolid". Here is its code:

Private Sub LabelBackColorSolid()

If ColorDialog1.ShowDialog() = DialogResult.OK Then

If bCMTrigger = True Then

If strCMTrigger = "lblP1JoyUp" Then

lblP1JoyUp.BackColor = (ColorDialog1.Color)

ElseIf strCMTrigger = "lblP1JoyRight" Then

lblP1JoyRight.BackColor = (ColorDialog1.Color)

End if

End if

End if

End Sub

The problem is that the label I'm right clicking on has a Label_Paint

event.
Execution goes to the line "LabelBackColorSolid" in the

cmlSolidColor_Click
event properly. Then It enters the Private Sub, "LabelBackColorSolid".

When
it attempts to read the first line, "If ColorDialog1..." and launch
the
dialog box, It immediately triggers the Label_Paint event and enter a
continuous loop. If I pause it in the debugger and then continue the
loop
ends, the dialog box pops up, I pick my color, it applies it and all
is
well. What can I do to stop this behavior. Is there a way to force it
now

to
do the Label_Paint event at this point, say, until the end of the
"LabelBackColorSolid" sub is complete?

Thank you,

John

Nov 20 '05 #6

P: n/a
Resolved!

"jcrouse" <me> wrote in message
news:uO**************@TK2MSFTNGP11.phx.gbl...
I am having problems with a Label_Paint event causing a continuous loop.
Here is an explanation of the code.

I right click on a label and a context menu pops up.

I then select a menu item named "cmLSolidColor". Here is its code:

Private Sub cmLSolidColor_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmLSolidColor.Click

LabelBackColorSolid()

End Sub

It calls a sub named "LabelBackColorSolid". Here is its code:

Private Sub LabelBackColorSolid()

If ColorDialog1.ShowDialog() = DialogResult.OK Then

If bCMTrigger = True Then

If strCMTrigger = "lblP1JoyUp" Then

lblP1JoyUp.BackColor = (ColorDialog1.Color)

ElseIf strCMTrigger = "lblP1JoyRight" Then

lblP1JoyRight.BackColor = (ColorDialog1.Color)

End if

End if

End if

End Sub

The problem is that the label I'm right clicking on has a Label_Paint event. Execution goes to the line "LabelBackColorSolid" in the cmlSolidColor_Click event properly. Then It enters the Private Sub, "LabelBackColorSolid". When it attempts to read the first line, "If ColorDialog1..." and launch the
dialog box, It immediately triggers the Label_Paint event and enter a
continuous loop. If I pause it in the debugger and then continue the loop
ends, the dialog box pops up, I pick my color, it applies it and all is
well. What can I do to stop this behavior. Is there a way to force it now to do the Label_Paint event at this point, say, until the end of the
"LabelBackColorSolid" sub is complete?

Thank you,

John

Nov 20 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.