Если вы не используете событие Paint
, вы просто рисуете на экране, где находится элемент управления. Элемент управления не знает об этом, поэтому он не знает, что вы намеревались оставить текст там ...
Если вы поместите значение, которое вы хотите нарисовать на панели, в его свойство Tag
, вы можете использовать один и тот же обработчик события рисования для всех панелей.
Кроме того, вам необходимо правильно утилизировать объект Font, иначе многие из них будут ждать завершения, прежде чем они вернут свои ресурсы в систему.
private void panel1_Paint(object sender, PaintEventArgs e) {
Control c = sender as Control;
using (Font f = new Font("Tahoma", 5)) {
e.Graphics.DrawString(c.Tag.ToString(), f, Brushes.White, new PointF(1, 1));
}
}