焦点移动ListBox时未选择同一窗口上的多个ListBox

时间:2018-12-19 04:41:56

标签: c#

我的窗口中有两个ListBoxLstStoreItemsLstPlayerItems。看起来像这样:

enter image description here

这里的想法是,当您从商店中选择一个项目时,Sell按钮被禁用,并且UnselectAll在播放器清单上,并且用老虎钳固定。这是代码:

    private void LstPlayerItems_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
    {
        LstStoreItems.UnselectAll();
        BtnBuy.IsEnabled = false;
        BtnSell.IsEnabled = true;
    }

    private void LstStoreItems_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
    {
        LstPlayerItems.UnselectAll();
        BtnBuy.IsEnabled = true;
        BtnSell.IsEnabled = false;
    }

但是,现在,如果我在播放器库存中选择一个项目,然后去商店库存中选择一个项目,它将执行代码,但实际上并没有选择我单击的项目。更改焦点列表框时如何获取它以选择项目?

1 个答案:

答案 0 :(得分:1)

我相信发生的是,当您执行UnSelectAll时,另一个ListBox的SelectionChanged事件被触发,这会导致新选择的项被取消选择。在取消选择另一个ListBox中的项目之前,请尝试检查以确保在ListBox中具有选定的项目。 像这样:

private void LstPlayerItems_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
    if (((ListBox)sender).SelectedIndex != -1)
        LstStoreItems.UnselectAll();
    BtnBuy.IsEnabled = false;
    BtnSell.IsEnabled = true;
}

private void LstStoreItems_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
    if (((ListBox)sender).SelectedIndex != -1)
        LstPlayerItems.UnselectAll();
    BtnBuy.IsEnabled = true;
    BtnSell.IsEnabled = false;
}