private TabPage CreateListViewTabPage(string categoryname, TabControl tabcontrol, Search search) { for (int i = 0; i < tabcontrol.TabPages.Count; i++) { var tabpage = tabcontrol.TabPages[i]; var lw = GetTabListViewControl(tabpage); if (lw.search == search) { lw.DataItems = category.Filter(getSelectedCategory(), search.getSearch()); return tabpage; } } var listview = new ListViewEx(category.Filter(categoryname, search.getSearch())); var page = listview.DataItems.Count / config.ShowNum; listview.Page = listview.DataItems.Count % config.ShowNum == 0 ? page : page + 1; if (categoryname == Category.Trust) { listview.MultiSelect = true; } listview.search = search; listview.ContextMenuStrip = TabListViewContextMenuStrip; listview.MouseUp += (sender, e) => { var item = listview.GetItemAt(e.X, e.Y); if (item == null && listview.FocusedItem !=null) { listview.FocusedItem.Selected = true; } }; listview.ItemSelectionChanged += (sender, e) => { if (e.IsSelected) { var d = listview.DataItems[e.ItemIndex]; this.EditItem(d.ID, false, false); } }; listview.DoubleClick += (sender, e) => { if (listview.SelectedIndices.Count == 1) { var selindex = listview.SelectedIndices[0]; var id = listview.DataItems[selindex].ID; this.Moves(id); } }; listview.ItemDrag += (s, e) => { if (listview.SelectedIndices.Count > 0) { var index = listview.SelectedIndices[0]; var data = listview.DataItems[index]; listview.DoDragDrop(data, DragDropEffects.Move); } }; listview.Dock = DockStyle.Fill; var t = new TabPage(search.Pattern); t.Controls.Add(listview); return t; }