Wpf 如何验证相同值的十个组合框?

Wpf 如何验证相同值的十个组合框?,wpf,vb.net,Wpf,Vb.net,我有10个有玩家的组合框。在每个组合框中必须选择一名玩家。现在,我必须验证它们的有效性,以便在combobox中只能选择一个唯一的播放器 例如: 组合框1-安娜 combobox2-安娜(也是) 但如果安娜被选中,我不想在另一个组合框中选择她。或者我可以在点击按钮“开始游戏”时显示错误消息,安娜在两个组合框中被选中。最重要的是它必须被验证。我只有一个想法,我可以验证这一点,这不是最好的方式 if cmbPlayer1.SelectedValue = cmbPlayer2.SelectedValu

我有10个有玩家的组合框。在每个组合框中必须选择一名玩家。现在,我必须验证它们的有效性,以便在combobox中只能选择一个唯一的播放器

例如:

组合框1-安娜

combobox2-安娜(也是)

但如果安娜被选中,我不想在另一个组合框中选择她。或者我可以在点击按钮“开始游戏”时显示错误消息,安娜在两个组合框中被选中。最重要的是它必须被验证。我只有一个想法,我可以验证这一点,这不是最好的方式

if cmbPlayer1.SelectedValue = cmbPlayer2.SelectedValue Or
   cmbPlayer1.SelectedValue = cmbPlayer2.SelectedValue Or
   ...
   cmbPlayer1.SelectedValue = cmbPlayer10.SelectedValue
十个组合框中的每一个都是如此

我怎样才能做得更好呢?

这个怎么样

我试着用一个里面有很多名字的组合框和一个列表框来显示组合框上选择的10名玩家。我提出这样一个条件:

如果选择相同的名称,将显示消息“检测到多个名称”。否则,如果您没有这样做,您将能够向列表框添加另一个名称

因此,我在选择名称时设置“预防”条件,而不是在按下按钮时

尝试添加列表框和组合框,用名称填充列表框值。并在选择该名称时使其显示在列表框中

然后在组合框中编写如下代码

  Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    If Not ListBox1.Items.Contains(ComboBox1.Text) Then
        ListBox1.Items.Add(ComboBox1.Text)
    Else
        MsgBox("Multiple name detected")
    End If
End Sub

希望这能对您有所帮助,并为我糟糕的英语感到抱歉。

创建所有选定值的列表

List<Player> players=new List<Player>
palyers.add(cmbPlayer1.SelectedValue) 

这个问题的答案很有用。您可以将每个值放入一个集合中,并以这种方式进行测试。就个人而言,我倾向于在进行选择时过滤剩余的列表,从而确保用户不可能选择重复的列表。这是一个多一点的代码,但它是一个更好的用户体验。预防通常比治疗好。您能否将名称放在一个列表框中,并设置选择模式,以便用户可以在列表框中进行10次选择?没有重复的。
palyers.Distinct().Count()==10