TreeView と DataGridView の 2 つの要素と 2 つの EventHandelr を持つ C# プログラムがあります。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 に焦点を合わせていない場合、本質的にこれらのイベントのどれが最初に発生するかで競合状態が発生することです (これはすべて 1 つのスレッド上にあります)。明らかに、この場合、DataGridView_Leave イベントを最初に起動するか、ユーザーがテーブルに加えた変更が、変更が保存される前に読み込まれる新しいテーブルによって吹き飛ばされます。
とにかく、どのイベントが最初に発生するかを強制する適切な方法はありますか?