Прежде всего, спасибо за то, что вы уделили время своему напряженному графику, чтобы помочь мне.Graphics.DrawRectangle не работает в контрольных событиях
Я разрабатываю проект (Win Application) с формой и 3 текстовыми полями (TextBox1, TextBox2 и TextBox3).
Мне нужно нарисовать прямоугольник вокруг текстового поля, когда это сфокусировано.
Код:
Private Sub TextBox123_Enter(sender As Object, e As System.EventArgs) Handles TextBox1.Enter, TextBox2.Enter, TextBox3.Enter
Using g As Graphics = Me.CreateGraphics
Dim r As Rectangle = sender.Bounds
r.Inflate(4, 4)
g.DrawRectangle(Pens.Blue, r)
End Using
End Sub
Проблема заключается в следующем:
- Первый раз получает textBox1 фокус прямоугольник не рисуется.
- В первый раз, когда textbox2 получает прямоугольник фокусировки, не нарисован.
Почему нет прямоугольника, нарисованного при вводе первых двух событий?
Что значит * В первый раз ... *. Когда форма загружается? –
Да. Когда форма загружена, прямоугольник не нарисован (событие TextBox123.Enter срабатывает, но DrawRectangle не влияет). Также, когда первый фокус изменен, прямоугольник не нарисован (когда фокус изменен с TextBox1 на TextBox2) –
Он нарисован, но сразу перекрашен, когда текстовое поле перерисовывается. Стандартная опасность использования CreateGraphics(), использующая его, ошибочна в 99,9% случаев. –