我有一个表单,我从数据库中获取许多记录动态的记录。当我点击删除按钮时,这也是删除,但我想重新渲染我的表单,这样用户就会觉得记录被完全删除了。当我写代码this.refresh();这不是从数据库获取值,我没有看到记录完全消失。它是windows C#form。
答案 0 :(得分:2)
方法Form.Refresh
和Form.Invalidate
与使应用程序从数据库中检索新数据无关。
Form.Refresh
- 同步重绘表单(即Form.OnPaintBackground
和Form.OnPaint
直接在当前线程上调用。
Form.Invalidate
- 异步重绘表单(即WM_PAINT
消息发送到窗口,因此UI线程将调用Form.OnPaintBackground
和Form.OnPaint
它处理消息)。
为了更新记录,您需要让控件检索更新的数据。
如果您指定有关Form
如何提取该数据的更多详细信息,则有人可以帮助您弄清楚如何更新该数据。例如,您使用数据绑定吗?您是否编写了自己的代码来检索记录?
基本上,在没有看到你的代码的情况下,我会说你可以在构造函数中接受你正在做的任何事情并将它放在一个单独的方法中(让我们称之为RefreshData
)。然后,在从数据库中删除记录后调用RefreshData
。
因此,您正在创建表示数据的新控件。在这种情况下,没有机制可以自动为您执行更新工作,您必须对其进行编码。您通常有两种选择:
保留对您创建的控件的引用,并在更新之前将其从Form
中删除。
实现更高效的内容,例如维护从数据行映射到表示它的控件的字典,以便您可以检查更新的数据,以及字典中从数据中消失的每一行,删除控件。
您可能还需要考虑使用一些具有内置数据绑定机制的控件,以节省大量工作。例如,GridView
。
答案 1 :(得分:0)
你能找到Invalidate()?
答案 2 :(得分:0)
如果要在构造函数中填充表单,则需要将加载代码提取到方法中。 然后在执行删除后在DeleteButton.OnClick事件上调用它。