Представьте себе простую Windows-форму .Net 2.0 с многострочным текстовым полем, которое заполняет всю форму. Я хочу (повторно) рисовать прямоугольник каждый раз, когда нажимается клавиша. В реальном приложении гораздо больше логики в отношении положения и прочего прямоугольника, но не усложняйте его.
Я подумал: «Давайте сначала аннулируем TextBox, а затем нарисуем прямоугольник». Но это не работает. Кратковременно мерцает экран - вот и все. Если я удалю строку «invaliate», будет нарисован прямоугольник, но старые сохранят свою позицию.
Что случилось? И как перекрасить с нуля?
Заранее спасибо за ваши ответы!
private void OnKeyDown(object sender, KeyEventArgs e)
{
textBox1.Invalidate();
using (Graphics g = this.textBox1.CreateGraphics())
{
int startX = 100;
int startY = 300;
int height = 200;
Brush brush = new SolidBrush(Color.FromArgb(60, 255, 0, 0));
Pen myPen = new Pen(Color.Black, 2);
myPen.DashStyle = DashStyle.Dash;
g.DrawRectangle(myPen, startX, startY, this.textBox1.Width, height);
g.FillRectangle(brush, startX, startY, this.textBox1.Width, height);
}
}