Перезагрузка формы в C # .net - PullRequest
0 голосов
/ 14 января 2011

У меня есть форма, из которой я извлекаю много записей из базы данных, из которых выполняется динамический рендеринг. Когда я нажимаю кнопку «Удалить», это также приводит к удалению, но я хочу повторно обработать мою форму, чтобы пользователь почувствовал, что записи полностью удалены. когда я пишу код this.refresh (); это не получение значений из базы данных, и я не вижу записи полностью ушел. Это форма windows C #.

Ответы [ 3 ]

2 голосов
/ 14 января 2011

Методы Form.Refresh и Form.Invalidate не имеют ничего общего с тем, чтобы приложение получало новые данные из базы данных.

  • Form.Refresh - синхронно перерисовывается форма (т.е. Form.OnPaintBackground и Form.OnPaint вызываются непосредственно в текущем потоке).

  • Form.Invalidate - асинхронно перерисовывает форму (т.е. WM_PAINT сообщение отправляется окну, поэтому Form.OnPaintBackground и Form.OnPaint будут вызываться потоком пользовательского интерфейса при обработке сообщений).

Чтобы обновить записи, необходимо, чтобы ваш элемент управления получал обновленные данные.

Если вы укажете более подробную информацию о том, как Form извлекает эти данные, кто-то может помочь вам выяснить, как их обновить. Например, вы используете привязку данных? Вы написали свой собственный код для извлечения записей?

По сути, не видя ваш код, я бы сказал, что вы можете взять все, что вы делаете в конструкторе, и поместить его в отдельный метод (давайте назовем его RefreshData). Затем позвоните RefreshData после удаления записей из базы данных.

Итак, вы создаете новые элементы управления, которые представляют данные. В этом случае нет механизма для автоматического выполнения обновления за вас, вам придется его кодировать. Обычно у вас есть два варианта:

  1. Сохраните ссылку на созданные вами элементы управления и удалите их из Form перед обновлением.

  2. Реализация чего-то более эффективного, например, поддержка словаря, который отображается из строк данных на элементы управления, которые его представляют, чтобы вы могли просматривать обновленные данные и каждую строку в своем словаре, которая исчезла из данных , удалите элементы управления.

Вы также можете рассмотреть возможность использования какого-либо элемента управления со встроенным механизмом привязки данных, который позволит вам сэкономить много работы. Например, GridView.

0 голосов
/ 14 января 2011

Если вы заполняете форму в конструкторе, вам нужно извлечь загрузочный код в метод.Затем вызовите его для события DeleteButton.OnClick после выполнения удаления.

0 голосов
/ 14 января 2011

Не могли бы вы найти Invalidate ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...