我有一個DataGridView打開MultiSelect。當SelectionChanged事件被觸發時,我想知道新選擇了哪些項目以及新選擇了哪些項目。例如,如果您選擇了多個項目(通過按住Ctrl單擊),然後釋放Ctrl鍵並選擇一個項目,我想知道哪些項目被取消選擇。我可以跟蹤之前選擇的物品集合,但我只是想確保我沒有想太多。如何確定在DataGridView中更改了哪些項目的選定狀態?
1
A
回答
1
這些信息應該在事件參數。
使用RowStateChanged
事件。 DataGridViewRowStateChangedEventArgs
將包含被點擊的行。如果用戶選擇/取消選擇多行,則將爲選中/取消選擇的每行調用一次事件。
e.Row.Selected
將產生該行現在是否選擇或取消選擇。
1
該事件不會確切地告訴你哪些事情發生了變化。如果您因某種原因需要知道,則必須跟蹤以前的選擇。
什麼是你想在響應此事件呢?可能有更簡單的方法來實現你的真正目標。
0
這個信息是不是天生可用於DataGridView
。但是,您可以在提供此信息的DataGridView
周圍編寫一個包裝。
public static void OnSelectionChanged(
this DataGridView view,
Action<List<DataGridViewRow>,List<DataGridViewRow>> handler) {
var oldSelection = view.SelecetedRows.Cast<DataGridViewRow>.ToList();
view.SelectedChanged += (sender,e) {
var newSelection = view.SelectedRows.Cast<DataGridViewRow>.ToList();
handler(oldSelection,newSelection);
oldSelection = newSelection;
};
}
使用案例
void HandleSelectionChanged(List<DataGridViewRow> oldRows, List<DataGridViewRow> newRows) {
..
}
void FormLoaded() {
myDataGridView.OnSelectionChanged(HandleSelectionChanged);
}
相關問題
- 1. 更改綁定列表框中的項目的選定狀態
- 2. 確定項目的狀態
- 3. 如何確定在同步上更改了哪些屬性
- 4. 複選框已更改狀態?如何找出哪些複選框已經改變了他們的狀態
- 5. 如何確定哪個提交引入了octopuss合併中的哪些更改
- 6. 如何確定在datagridview中的哪些單元格被檢查?
- 7. 如何比較目錄以確定哪些文件已更改?
- 8. Visual Studio 2010如何確定哪些項目是測試項目?
- 9. 如何確定在HSQLDB中定義了哪些外鍵?
- 10. 敲除:確定已選擇陣列中的哪些項目
- 11. 如何確定在編輯模式下選擇了哪些行
- 12. 如何確定哪個項目在WinJS.UI.Listview
- 13. Android:如何更改首選項中的選定項目顏色?
- 14. 如何確定在wxpython中選擇了哪個列表框項目
- 15. 如何確定選定的gridview項目?
- 16. 確定哪些FormCollection值已更改
- 17. 如何以編程方式更改datagridview中的組合框選定項目?
- 18. Backbone/Rails確定保存了哪些新項目?
- 19. 確定OpenSSH與哪些選項進行了編譯?
- 20. Uploadify - 如何確定選擇了哪個fileExt選項?
- 21. 確定哪些git文件使用Ruby進行了更改?
- 22. Asmselect和更改選項的選定狀態用Javascript
- 23. 更改knockout.js選項文本取決於其選定的狀態
- 24. jQuery更改所選項目更改選定選項的背景
- 25. 更改WPF中樹狀視圖的選定項目
- 26. 如何更改在UWP中選定的ListView項目的樣式
- 27. 確定在Vaadin中修改了哪些文本字段
- 28. 確定哪些元素在多重選擇上更改時發生更改
- 29. 如何篩選和顯示datagridview中的選定項目?
- 30. 在WP7 + Silverlight中,如何更改ListBox項目的視覺狀態?
+1我覺得這是 – 2009-12-05 03:54:18