1 Attachment(s)
[RESOLVED] [2008] Main Form Shown Event and Draw in a textbox
Hi!!
I have several textboxes on my only form in my project. And inside the Shown event of my form I have a piece of code that Draws numbers into each every textbox using this (only part of the code is here):
Code:
If NumerosPossiveis.Contains("1") Then g.DrawString("1", Me.Font, New SolidBrush(Me.ForeColor), 3, 1)
If NumerosPossiveis.Contains("2") Then g.DrawString("2", Me.Font, New SolidBrush(Me.ForeColor), 13, 1)
If NumerosPossiveis.Contains("3") Then g.DrawString("3", Me.Font, New SolidBrush(Me.ForeColor), 23, 1)
If NumerosPossiveis.Contains("4") Then g.DrawString("4", Me.Font, New SolidBrush(Me.ForeColor), 3, 13)
If NumerosPossiveis.Contains("5") Then g.DrawString("5", Me.Font, New SolidBrush(Me.ForeColor), 13, 13)
If NumerosPossiveis.Contains("6") Then g.DrawString("6", Me.Font, New SolidBrush(Me.ForeColor), 23, 13)
If NumerosPossiveis.Contains("7") Then g.DrawString("7", Me.Font, New SolidBrush(Me.ForeColor), 3, 25)
If NumerosPossiveis.Contains("8") Then g.DrawString("8", Me.Font, New SolidBrush(Me.ForeColor), 13, 25)
If NumerosPossiveis.Contains("9") Then g.DrawString("9", Me.Font, New SolidBrush(Me.ForeColor), 23, 25)
So when I run the program I should see all the drawn strings, instead I get this (See attachment)
Its like he draw the strings correctly but then something draw over the strings.
Why does this happen?
Re: [2008] Main Form Shown Event and Draw in a textbox
1. All drawings need to be done in the Paint event of the control.
2. If you want to draw on a particular control, you need to use the graphics object of that control.
So now the question is, what event are you doing the drawing and what graphics object are you using? I hope you're drawing in the Shown event of the form :)
Re: [2008] Main Form Shown Event and Draw in a textbox
Quote:
Originally Posted by stanav
1. All drawings need to be done in the Paint event of the control.
2. If you want to draw on a particular control, you need to use the graphics object of that control.
So now the question is, what event are you doing the drawing and what graphics object are you using? I hope you're drawing in the Shown event of the form :)
I hope he's not drawing in the form's shown event, I'd hope it's in the textbox's overridden on paint event
Re: [2008] Main Form Shown Event and Draw in a textbox
I'm using the graphics object of the textbox I'm currently drawing in.
Quote:
I hope he's not drawing in the form's shown event, I'd hope it's in the textbox's overridden on paint event
Actually I'm drawing inthe form's shown event, because if I draw in the textbox's overridden on paint event I have to create a class that inherits form Textbox to do that, and I simply dont want to, unless there is no other option.
Re: [2008] Main Form Shown Event and Draw in a textbox
No, you don't have to create any class that inherits the TextBox class. You can just handle your TextBox.Paint event and doing the drawing there instead of doing it in the Form.Shown event as you're doing now.
Re: [2008] Main Form Shown Event and Draw in a textbox
Well, didnt work
Code:
Private Sub A2_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles A2.Paint
Dim NumerosPossiveis As String = A2.Tag.ToString
If NumerosPossiveis = Nothing Then Exit Sub
Dim g As Drawing.Graphics = A2.CreateGraphics
If NumerosPossiveis.Contains("1") Then g.DrawString("1", Me.Font, New SolidBrush(Me.ForeColor), 3, 1)
If NumerosPossiveis.Contains("2") Then g.DrawString("2", Me.Font, New SolidBrush(Me.ForeColor), 13, 1)
If NumerosPossiveis.Contains("3") Then g.DrawString("3", Me.Font, New SolidBrush(Me.ForeColor), 23, 1)
If NumerosPossiveis.Contains("4") Then g.DrawString("4", Me.Font, New SolidBrush(Me.ForeColor), 3, 13)
If NumerosPossiveis.Contains("5") Then g.DrawString("5", Me.Font, New SolidBrush(Me.ForeColor), 13, 13)
If NumerosPossiveis.Contains("6") Then g.DrawString("6", Me.Font, New SolidBrush(Me.ForeColor), 23, 13)
If NumerosPossiveis.Contains("7") Then g.DrawString("7", Me.Font, New SolidBrush(Me.ForeColor), 3, 25)
If NumerosPossiveis.Contains("8") Then g.DrawString("8", Me.Font, New SolidBrush(Me.ForeColor), 13, 25)
If NumerosPossiveis.Contains("9") Then g.DrawString("9", Me.Font, New SolidBrush(Me.ForeColor), 23, 25)
End Sub
What I did wrong?