【问题标题】:c# listbox selected change row event works but row is not selectedc# listbox selected change row 事件有效,但未选择行
【发布时间】:2014-05-29 08:31:14
【问题描述】:

我有问题。我有三个主要类别的按钮,当您单击其中一个按钮时,ListBox 中会出现一些内容,并且会出现带有子类别的按钮。如果单击子类别,则 ListBox 中会出现不同的内容。

我有这样的方法:

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.SelectedItem = null; 这样的东西我看不到任何东西在开始时选择但 SelectedIndexChange 事件仍然有效,因为它将第一行添加到我的 DataGridView。我不知道为什么,你能帮帮我吗?

更短: 在我的程序中,当您在 ListBox 中选择 sth 时,它会出现在 DataGridView 中。当我设置 myListBox.ClearSelected();my.SelectedItem = null; 时,一开始没有选择任何内容,但 SelectedIndexChange 事件有效并且首先列表框中的东西被添加到 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;
        }
    }

PS。 我解决了这个问题。当用户单击 ListBox 并出现 SelectedIndexChange 事件时,我将列表框中的内容添加到 DataGridView 中。但也许有更简单、更漂亮的解决方案?

【问题讨论】:

  • 请向我们展示列表框的 SelectedIndex Change 事件中的代码...
  • 我更新了我的主帖;)

标签: c# winforms datagridview


【解决方案1】:

这正是SelectedIndexChanged 的工作方式。

您要做的是将myListBox.SelectedIndex 与-1 或myListBox.SelectedItemnull 进行比较,以查看列表框中是否实际选择了某些内容。

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

【讨论】:

    【解决方案2】:

    这样试试

     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
            }           
       }
    

    【讨论】:

    • 它也不起作用......但是......我认为问题出在哪里。当我单击一个按钮时,事件 selectedindexchange 会出现两次!起初它有 selecteditems.count = 1 (然后将 sth id 添加到 dataGridView),然后在第二个 selecteditems.count = 0....
    • 我以为是因为我清除选择的索引太多次,但是当我只执行一次时, selectedindexchange 仍然有效两次......
    猜你喜欢
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 2012-10-10
    • 1970-01-01
    相关资源
    最近更新 更多