繁体   English   中英

如何从另一个组合框中删除组合框的所选项目

[英]How to delete a combobox's selected item from another Combobox

我正在尝试创建一个简单的票务应用程序,但是我被卡在某个地方。 我有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#),声明一个称为citys的公共变量:

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中删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM