请禁止任何"这是糟糕的设计等等。"答案。这只是我正在看的更复杂情况的一个例子。
我们说我在表单中有一个DataGridView。我有它加载数据,我目前在处理RowLeave事件的RowLeave事件委托。让我们在RowLeave事件中说我要对整个DataGridView进行更改。在完成所有更改后,我想将结果呈现给用户。单击OK后,我想将数据重新加载到DataGridView中(注意我仍然在RowLeave事件处理程序中)。如何在RowLeave处理程序完成(或接近)之后或在RowLeave处理程序本身中刷新DataGridView,避免可怕的:
Operation is not valid because it results in a reentrant call to the SetCurrentCellAddressCore function
我可以想到几种方法:
(1)在RowLeave处理程序的末尾设置一些全局变量,然后让计时器每x秒查看一次变量并刷新DataGridView。 (2)有没有办法将消息放在Windows事件队列中,以后可以用来触发刷新?有任何示例代码吗?
必须有一种比#1更聪明,更可靠的方法来做到这一点......有没有办法做#2?