對此問題的答案可能會變成「不使用鍵入的數據集而不使用綁定導航器」。 然而,我很好奇我看到的行爲。更改列表框選擇不會將更改從BindingSource移動到數據集
因此,我創建了一個表單,其中每個控件都從數據源瀏覽器中拖出。 我刪除了綁定導航器,因爲它對於這個特殊的表單來說很醜,也不合適。 我添加了一個ListBox並將DataSource設置爲BindingSource。
注意ListBox沒有被綁定,它只是從BindingSource中自己填充。 通過一些我不指望的魔法,在ListBox中移動將瀏覽BindingSource,並且所有其他控件都相應地更新。
我可以對綁定控件進行更改,並顯式調用BindingSource上的EndEdit,然後通過Table Adapter更新DataSource。很棒。
當我在綁定控件中進行更改並單擊列表框中的新選項時,我希望能夠檢查更改並提示保存或重置(如果有)。
這是我一直未能弄清楚的奇怪部分。
無論我附加到什麼事件,DataSet.HasChanges在第二個ListBox更改之前都不會返回true。 我搜索並嘗試了幾十條建議,其中大部分都很荒謬,但有一些看起來很有希望。 沒有運氣。
編輯:這不是第二次點擊是重要的,它是當你點擊原始(編輯)的項目。