我有两个组合框。第一个组合框用于选择管理器,第二个用于选择助理。经理。但是,两个combox中的源名称相同。因此,例如,如果我从第一个组合框中选择“James”,那么我将不会从第二个组合框中选择它。当我点击第二个组合框中的“James”时,它应该给我一个错误,不能选择“JAmes”。
我将该代码写入第二个组合框的selection_changed事件:
if (Manager.SelectedItem == Asst_MAnager.SelectedItem)
{
MessageBox.Show("You must change Asst_Manager");
}
这是正确的,如果我选择相同的项目,那么它会给我错误信息。但是,它仍然会在错误消息后选择相同的项目。我的WPF代码如下。你能给我任何想法吗?
<local:ComboBoxCW Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" x:Name="Manager" Text="" Background="#FFC8D2E8" Margin="0,0,0,3"
SelectedID="{Binding Path=[Manager}" />
<local:ComboBoxCW Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" x:Name="Asst_Manager" Text="" Background="#FFC8D2E8" CWListName="Assistant Manager" Margin="0,0,0,3"
SelectedID="{Binding Path=[Asst_Manager]}" SelectionChanged="Asst_Manager_SelectionChanged" />
答案 0 :(得分:2)
由于你的组合框是数据绑定的,你不能将SelectedIndex设置为-1(通常应取消选择你所做的任何选择),并且看起来像这样:
if (Manager.SelectedItem == Asst_MAnager.SelectedItem)
{
MessageBox.Show("You must change Asst_Manager");
Asst_Manager.SelectedIndex = -1;
}
所以,我建议你在每个方框的第一个项目中选择“选择一个名字”。这样你就可以做到:
if (Manager.SelectedItem == Asst_MAnager.SelectedItem)
{
MessageBox.Show("You must change Asst_Manager");
Asst_Manager.SelectedIndex = 0;
}
或类似的东西。它不漂亮,到目前为止不是最好的方式。但这很简单,并且完成了工作。
答案 1 :(得分:0)
您是否尝试过使用验证规则?您可以使用从ValidationRule继承的类,并在选择值之前检查其中的值。
Here您有一篇解释此主题的文章。希望它有所帮助。
答案 2 :(得分:0)
我只想使用LINQ过滤Asst_Manager列表,甚至在asst mgr列表中都没有mgr名称。在从第一个项目中选择一个项目之前,我不会激活第二个列表。
答案 3 :(得分:0)
您可以使用选择已更改的事件
private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string s = string.Empty;
string s1 =string.Empty;
if (comboBox2.SelectedItem != null)
{
s1 = comboBox2.SelectedItem.ToString();
}
if (comboBox1.SelectedItem != null)
{
s = comboBox1.SelectedItem.ToString();
}
if (s == s1)
{
MessageBox.Show("You have Selected These Item As Second Combobox");
comboBox1.SelectedItem = null;
}
}
private void comboBox2_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string s=string.Empty;
string s1 = string.Empty;
if (comboBox1.SelectedItem != null)
{
s = comboBox1.SelectedItem.ToString();
}
if (comboBox2.SelectedItem != null)
{
s1 = comboBox2.SelectedItem.ToString();
}
if (s == s1)
{
MessageBox.Show("You have Selected These Item As First Combobox");
comboBox2.SelectedItem = null;
}
}