好的,我有一個表示數據集的綁定源。 該綁定源綁定到一個列表框。這完全按照預期工作,因爲它填充了指定列中的所有名稱。不是問題。DoDragDrop干擾綁定源
我有第二個列表框,綁定到一個不同的bindingsource1,它本身綁定到bindingsource1,但使用一個數據庫表示一個到數據集中不同表的關係。結果是當我點擊第一個列表中的一個項目時,第二個列表顯示所有相關的東西。
這裏沒有什麼新東西,或者確實很複雜,它是非常標準的東西,並且完全按照預期工作。
但是,我試圖在第一個列表框中實現拖放功能。我爲mousedown添加了一個事件處理程序。這裏面,我打電話
DoDragDrop(current, DragDropEffects.Copy | DragDropEffects.Move);
其中電流設置爲當前對象從bindingsource1.Current.Row["Name"]
。
現在,這是奇怪的地方。即使列表框本身已被正確更新(因爲新選擇的項目被突出顯示,索引和項目都按預期返回,新選擇的項目/索引)bindingsource1.Current尚未更新,實際上,第二個列表框仍然顯示與先前選擇的項目相關的數據。
使用箭頭鍵上下移動會導致列表框突出顯示按預期更改,並且還會按預期方式更新listbox2中的數據。
評論DoDragDrop行和一切似乎完全按預期工作。
從這我只能推斷DoDragDrop是以某種方式阻止某些事件發射,但我不知道爲什麼/如果這是所需的行爲/如何骯髒的工作圍繞它/如何正確工作它...
幫助我歐比旺·克諾比,你是我唯一的希望......
編輯:我創建了一個簡單的實現問題:dropbox.com/s/qxfsvr28ftojdax/BindingDragDrop.zip註釋掉在頂部的dodragdrop和標籤改變,將dodragdrop放入,甚至不會註冊... -
Guesing無碼看:異常在d + d事件處理程序吞噬。 Debug + Exceptions,勾選Thrown複選框以查看CLR異常。 –