Example #1
0
        private void MakeActive(string itemListId, List <ListViewItem> listViewItemList)
        {
            var queueList = m_listQueue.ToList();
            AutoCompleteItemList itemList = queueList.Find(l => l.Tag is string && (l.Tag as string) == itemListId);

            MakeActive(itemList, listViewItemList);
        }
Example #2
0
        private void MakeActive(AutoCompleteItemList itemList, List <ListViewItem> listViewItemList)
        {
            m_currentListOfListViewItems = listViewItemList;
            var queueList = m_listQueue.ToList();

            m_listQueue = new Queue <AutoCompleteItemList>(queueList.Except(new[] { itemList }));
            m_listQueue.Enqueue(itemList); //ganz hinten einfügen
            itemList.Show();
            itemList.Visible = true;
            queueList.Except(new[] { itemList }).ToList().ForEach(l => { l.Visible = false; l.Hide(); });
            m_currentActiveItemListControl = itemList;
        }
Example #3
0
        private void BuildItemListAsync(AutoCompleteItemList listControl, List <ListViewItem> listViewItemList, string itemListId)
        {
            lock (asyncItemAddLockObject)
            {
                m_addItemsRun++;
            }
            Action asyncAddAllItems = () =>
            {
                int currentRun = m_addItemsRun;
                lock (asyncItemAddLockObject)
                {
                    Action clearList = () => listControl.Items.Clear();
                    this.Invoke(clearList);
                }
                int pageStart = 0;
                int pageSize  = 500;
                while (true)
                {
                    pageSize = Math.Min(pageSize, listViewItemList.Count - pageStart);
                    var    page    = listViewItemList.Skip(pageStart).Take(pageSize);
                    Action addItem = () => listControl.Items.AddRange(page.ToArray());
                    lock (asyncItemAddLockObject)
                    {
                        if (m_addItemsRun != currentRun)
                        {
                            break;
                        }
                        this.BeginInvoke(addItem);
                    }
                    if (pageStart + pageSize == listViewItemList.Count)
                    {
                        break;
                    }
                    pageStart += Math.Min(pageSize, listViewItemList.Count - pageSize);
                }
            };

            asyncAddAllItems.BeginInvoke(null, null);
        }