Методы Form.Refresh
и Form.Invalidate
не имеют ничего общего с тем, чтобы приложение получало новые данные из базы данных.
Form.Refresh
- синхронно перерисовывается форма (т.е. Form.OnPaintBackground
и Form.OnPaint
вызываются непосредственно в текущем потоке).
Form.Invalidate
- асинхронно перерисовывает форму (т.е. WM_PAINT
сообщение отправляется окну, поэтому Form.OnPaintBackground
и Form.OnPaint
будут вызываться потоком пользовательского интерфейса при обработке сообщений).
Чтобы обновить записи, необходимо, чтобы ваш элемент управления получал обновленные данные.
Если вы укажете более подробную информацию о том, как Form
извлекает эти данные, кто-то может помочь вам выяснить, как их обновить. Например, вы используете привязку данных? Вы написали свой собственный код для извлечения записей?
По сути, не видя ваш код, я бы сказал, что вы можете взять все, что вы делаете в конструкторе, и поместить его в отдельный метод (давайте назовем его RefreshData
). Затем позвоните RefreshData
после удаления записей из базы данных.
Итак, вы создаете новые элементы управления, которые представляют данные. В этом случае нет механизма для автоматического выполнения обновления за вас, вам придется его кодировать. Обычно у вас есть два варианта:
Сохраните ссылку на созданные вами элементы управления и удалите их из Form
перед обновлением.
Реализация чего-то более эффективного, например, поддержка словаря, который отображается из строк данных на элементы управления, которые его представляют, чтобы вы могли просматривать обновленные данные и каждую строку в своем словаре, которая исчезла из данных , удалите элементы управления.
Вы также можете рассмотреть возможность использования какого-либо элемента управления со встроенным механизмом привязки данных, который позволит вам сэкономить много работы. Например, GridView
.