c#列表框选择更改行事件工作,但行未被选中

本文关键字:工作 事件 列表 选择 | 更新日期: 2023-09-27 18:05:54

我有一个问题。我有三个主要类别的按钮,当你点击其中一个按钮时,一些东西会出现在列表框中,带有子类别的按钮也会出现。如果你点击子类别,那么不同的东西就会出现在列表框中。

我有这样的方法:

private void DisplayPeople(string category); //I use it ParentClicked and SubClicked
private void ParentClicked(object sender, EventArgs e); //for parent category
private void SubCatClicked(object sender, EventArgs e); //for subcategory
myListBox.SelectedIndexChanged+= new EventHandler(selectedIndexChange); 

当你在列表框中选择某物时,它应该出现在我的DataGridView中,它工作得很好。然而,当我点击按钮和东西出现在列表框,我把东西像myListBox.ClearSelected();my。我看到在开始时没有选择任何东西,但仍然SelectedIndexChange事件有效,因为它将第一行添加到我的DataGridView。我不知道为什么,你能帮帮我吗?

更短:在我的程序中,当您在ListBox中选择sth时,它出现在DataGridView中。当我设置myListBox.ClearSelected();my。SelectedItem = null;,开始没有选择,但SelectedIndexChange事件有效,listbox中的第一件事添加到DataGridView。我不希望那样,我希望它只在被用户选中时出现在datagridview中

现在我的事件处理程序看起来像这样:

private void selectedIndexChange(object sender, EventArgs e)
{
  Person person = (Person)MyListBox.SelectedItem;
  if (MyListBox.Items.Count > 0 && MyListBox.SelectedItems.Count > 0)
        {
            Basket.Add(person);
            dataGridView1.DataSource = Basket;
        }
    }

p。我解决了这个问题。我这样做,从listbox的东西被添加到DataGridView当用户点击listbox和SelectedIndexChange事件出现。但也许有更简单、更漂亮的解决方案?

c#列表框选择更改行事件工作,但行未被选中

这正是SelectedIndexChanged应该如何工作的。

你要做的是比较myListBox.SelectedIndex与-1或myListBox.SelectedItemnull,看看是否有东西在列表框中被选中。

http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.selectedindexchanged (v = vs.110) . aspx

试试

 private void myListBox_SelectedIndexChanged(object sender, EventArgs e)
  {
        if (myListBox.Items.Count > 0 && myListBox.SelectedItems.Count > 0)
        {
            //Do something in DatagridView
        }
        else
        {
            //clear the gridview
        }           
   }
相关文章: