#c# #.net #winforms #graphics
#c# #.net #winforms #графика
Вопрос:
Хорошо, я новичок в C #, и я не понимаю, как работают события. в настоящее время у меня есть панель, в которой я рисую прямоугольники. событие вызывается при инициализации панели, но я хочу вызвать его после того, как я что-то сделаю в своей таблице данных. Я просто хочу знать, как сообщить объекту об обновлении.
Разве я не использую событие в этой ситуации? Если да, то могу ли я просто создать новый графический экземпляр и запустить?
Вот мой код:
private void panel6_Paint(object sender, PaintEventArgs e)
{
if(dataGridView1.RowCount != 0 )
{
Pen lightRed = new Pen(Brushes.LightSalmon);
lightRed.Width = 1.0F;
lightRed.LineJoin = System.Drawing.Drawing2D.LineJoin.Miter;
int counter = 0;
foreach (var pair in currentPosition)
{
if(dataGridView1[0, counter].Style.BackColor == Color.Red)
{
e.Graphics.DrawRectangle(lightRed, new Rectangle(0, currentPosition.Count / panel6.Height * counter, 66, currentPosition.Count / panel6.Height * counter));
}
}
lightRed.Dispose();
}
}
Комментарии:
1. Пожалуйста, не добавляйте ключевое слово или тег к заголовку вашего сообщения. Вот почему у нас есть система тегов.
Ответ №1:
Всякий раз, когда вы хотите принудительно перерисовать, вызывайте:
Invalidate();
…или
Refresh();
Invalidate()
предпочтительнее … Refresh()
попытки быть более непосредственными.
Итак, для вашей панели:
panel6.Invalidate();
Вы бы вызвали это в любой момент, когда хотите сообщить элементу управления, что он должен перерисовать себя. Это приведет к Paint
запуску вашего события.