我有3个具有相同3项(a,b,c)的组合框。如果我在组合框1中选择“a”,则“a”将从组合框2中移除,留在组合框2中的项目将是“b”& “C”。然后我在combobox2中选择“b”,“b”将从combobox3中删除,而combobox3中的项目将是“a”& “C”。 如果前一个组合框通过selectionChanged,则删除的项目将再次恢复到组合框中。我尝试了一些我在互联网上找到的代码,但是没有用...来自previos组合框的所选项目没有被删除。
我的组合框代码:
<ComboBox Name="firstCombo" SelectionChanged="firstCombo_SelectionChanged">
<ComboBoxItem Content="A"></ComboBoxItem>
<ComboBoxItem Content="B"></ComboBoxItem>
<ComboBoxItem Content="C"></ComboBoxItem>
</ComboBox>
<ComboBox Name="secondCombo" SelectionChanged="secondCombo_SelectionChanged">
<ComboBoxItem Content="A"></ComboBoxItem>
<ComboBoxItem Content="B"></ComboBoxItem>
<ComboBoxItem Content="C"></ComboBoxItem>
</ComboBox>
<ComboBox Name="thirdCombo" >
<ComboBoxItem Content="A"></ComboBoxItem>
<ComboBoxItem Content="B"></ComboBoxItem>
<ComboBoxItem Content="C"></ComboBoxItem>
</ComboBox>
我的C#代码:
private void firstCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
secondCombo.Items.Remove(firstCombo.SelectionBoxItem);
}
private void secondCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
thirdCombo.Items.Remove(secondCombo.SelectionBoxItem);
}
答案 0 :(得分:1)
我想问题是那些实际上是不同的ComboBoxItem
个实例。它们具有相同的文本,但它们仍然是不同的实例。因此,SelectionBoxItem
中的secondCombo
thirdCombo.Items
将无法在{{1}}中找到,因此不会被删除。
您需要根据显示的文字将其删除。
答案 1 :(得分:0)
您可以使用SelectedIndex删除它,但如果您之前删除了某些内容,请注意它,因为如果您已删除它,那么索引就不一样了:
private void firstCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
secondCombo.Items.RemoveAt(firstCombo.SelectedIndex);
}
答案 2 :(得分:0)
也许这就是说。
String strCombo1 = comboBox1.SelectedItem.ToString();
comboBox2.Items.Remove(strCombo1);
答案 3 :(得分:0)
您可以只更改单个项目的可见性,而不是添加和删除项目。
如果您将其绑定在XAML中(通过转换器),则会自动执行“删除”和“读取”。
<ComboBox Name="firstCombo">
<ComboBoxItem Content="A"></ComboBoxItem>
<ComboBoxItem Content="B"></ComboBoxItem>
<ComboBoxItem Content="C"></ComboBoxItem>
</ComboBox>
<ComboBox Name="secondCombo">
<ComboBoxItem Content="A"
Visiblity="{Binding ElementName=firstCombo Path=SelectedIndex,
Converter=IndexToVisibiltyConverter,
ConverterParameter=A></ComboBoxItem>
<ComboBoxItem Content="B"
Visiblity="{Binding ElementName=firstCombo Path=SelectedIndex,
Converter=IndexToVisibiltyConverter,
ConverterParameter=B></ComboBoxItem>
<ComboBoxItem Content="C"
Visiblity="{Binding ElementName=firstCombo Path=SelectedIndex,
Converter=IndexToVisibiltyConverter,
ConverterParameter=C></ComboBoxItem>
</ComboBox>
<ComboBox Name="thirdCombo">
<ComboBoxItem Content="A"
Visiblity="{Binding ElementName=secondCombo Path=SelectedIndex,
Converter=IndexToVisibiltyConverter,
ConverterParameter=A></ComboBoxItem>
<ComboBoxItem Content="B"
Visiblity="{Binding ElementName=secondCombo Path=SelectedIndex,
Converter=IndexToVisibiltyConverter,
ConverterParameter=B></ComboBoxItem>
<ComboBoxItem Content="C"
Visiblity="{Binding ElementName=secondCombo Path=SelectedIndex,
Converter=IndexToVisibiltyConverter,
ConverterParameter=C></ComboBoxItem>
</ComboBox>
*注意:转换器定义不是合法语法 - 仅供说明!
您可以绑定到显示的文本或选定的值 - 最方便的。
转换器会根据参数检查索引/文本/值,并根据需要返回Visibility.Visible
或Visibility.Collapsed
。