代码之家  ›  专栏  ›  技术社区  ›  John M

Listview ItemSelectionChanged激发两次?

  •  8
  • John M  · 技术社区  · 15 年前

    我有一个C语言的Winforms应用程序,带有ListView控件。此列表视图显示了待办事项的列表,我正在使用“ItemSelectionChanged”事件来处理更新。

    问题是每次我尝试进行更新时,“ItemSelectionChanged”事件都会触发两次。

    有没有办法在刷新后禁止触发事件?

    更新1:

    private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
        {   
            if (e.IsSelected)
            {                
                listView1.Items[e.ItemIndex].Remove();
    
                listView1.SelectedIndices.Clear();
                listView1.Focus();
    
                listView1.Update();
            }
            else
            {
    
            }
    
        }
    
    4 回复  |  直到 15 年前
        1
  •  16
  •   Hans Passant    15 年前

        private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) {
            if (e.IsSelected) {
                // Update form
                //...
            }
        }
    
        2
  •  0
  •   Khoa Tran    8 年前

    listView1.SelectedItem=null;

        3
  •  -1
  •   Iain Ward    15 年前

    是的,只需在刷新开始时删除EventHandler,并在刷新完成后再次添加它

    // Remove handler
    listView1.ItemSelectionChanged -= new ListViewItemSelectionChangedEventHandler(listView1_ItemSelectionChanged);
    
    // Do refresh
    
    // Add again
    listView1.ItemSelectionChanged += new ListViewItemSelectionChangedEventHandler(listView1_ItemSelectionChanged);
    
        4
  •  -1
  •   Govind Samrow    7 年前

    试试这个:

    private void ItemSelect()
    {
    
            if(SelectedItem!=null)
                App.Current.MainPage.Navigation.PushAsync(new Pages.TLAccByCurrency(), true);
            _selectedItem = null;
    }
    
    推荐文章