我有一个 C# 程序,它有两个元素,一个 TreeView 和一个 DataGridView 以及两个 EventHandelrs。当在 TreeView 中选择一个项目时,DataGridView 带有一个表格,显示一些信息并且可以由用户编辑。TreeView 中的每个项目都有自己唯一的表。当用户不关注 DataGridView 时,软件底层软件模型被更新(保存用户所做的更改):
aDataGridView_Leave(object sender, EventArgs e)
{
//Update the software model (save the current DataGridView)
}
aTreeView_AfterSelect(object sender, EventArgs e)
{
//Update the table that is shown in aDataGridView
}
我的问题是,如果用户通过在 TreeView 中选择不同的项目来分散对 DataGridView 的关注,我基本上在这些事件中的哪一个首先发生之间存在竞争条件(即使这一切都在一个线程上)。显然,在这种情况下,我希望 DataGridView_Leave 事件首先触发,否则用户对表所做的更改会被在保存更改之前加载的新表所吹走。
无论如何,有没有优雅的方式来强制执行首先发生的事件?