如何从另一个组合框中删除一个组合框'

本文关键字:组合 一个 删除 另一个 | 更新日期: 2023-09-27 18:18:04

我试图创建一个简单的票务公平应用程序,但我被困在某个地方。我有load-Data()方法填充2组合框(目的地&源),每个都包含相同的城市列表。我想要目的地的选定项目(城市)从源中删除。

我禁用了从目标组合框的Selection_Changed事件中启用的源组合框。

我尝试在Selection_Changed事件中从源中删除目标的选定项目。但我突然想到,如果用户一开始就选错了东西怎么办?无论如何,它都会从源代码中删除。

有什么建议吗?

下面是我试过的代码:

private void DestinationCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
           // await LoadData();
        object selectedItem = DestinationCombo.SelectedItem;
            if(SourceCombo.Items.Contains(selectedItem))
            {
                SourceCombo.Items.Remove(selectedItem);
            }
        //await LoadData();
        SourceCombo.IsEnabled = true;
        }

"LoadDate"方法:

private async Task LoadData()
        {
            DestinationCombo.Items.Clear();
            SourceCombo.Items.Clear();
            file = await ApplicationData.Current.LocalFolder.GetFileAsync("jsonText.txt");
            var jsonContent = await FileIO.ReadTextAsync(file);
            DataModel2.RootObject states = JsonConvert.DeserializeObject<DataModel2.RootObject>(jsonContent);
            foreach (var state in states.country.state)
            {
                foreach (var city in state.city)
                {
                    DestinationCombo.Items.Add(city);
                    SourceCombo.Items.Add(city);
                }
            }
        }

如何从另一个组合框中删除一个组合框'

首先,在所有这些方法所在的地方,即在类中(很可能是form#),声明一个名为cities的公共变量:-

public list<string> cities = new list<string>;

然后编辑你的loaddata()方法:

private async Task LoadData()
    {
        DestinationCombo.Items.Clear();
        SourceCombo.Items.Clear();
        file = await ApplicationData.Current.LocalFolder.GetFileAsync("jsonText.txt");
        var jsonContent = await FileIO.ReadTextAsync(file);
        DataModel2.RootObject states = JsonConvert.DeserializeObject<DataModel2.RootObject>(jsonContent);
        foreach (var state in states.country.state)
        {
            foreach (var city in state.city)
            {
                cities.Add(city);
            }
        }
        DestinationCombo.Items.AddRange(cities.ToArray<String>());
        SourceCombo.Items.AddRange(cities.ToArray<String>());
    }

最后,在SourceCombo SelectionChanged Event中,放入以下代码:

private void SourceCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
       // await LoadData();
    object selectedItem = SourceCombo.SelectedItem;
    DestinationCombo.Items.Clear();
    DestinationCombo.Items.AddRange(cities.ToArray<String>());
    DestinationCombo.Items.Remove(selectedItem);
    }

您还可以向其他ComboBox添加类似的代码,这样无论用户单击哪个ComboBox(源或目标),所选内容都将从另一个ComboBox中删除。