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

时间:2018-02-09 08:08:14

标签: wpf vb.net

我有10个与玩家组合的组合框。在每个组合框中必须选择一个玩家。现在,我必须验证它们,在组合框中只能选择一个独特的播放器。

例如:

combobox1 - Anna

combobox2 - Anna(太)

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

if cmbPlayer1.SelectedValue = cmbPlayer2.SelectedValue Or
   cmbPlayer1.SelectedValue = cmbPlayer2.SelectedValue Or
   ...
   cmbPlayer1.SelectedValue = cmbPlayer10.SelectedValue

等十个组合框中的每一个。

我怎样才能做得更好?

2 个答案:

答案 0 :(得分:1)

创建所有选定值的列表。

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

最多10名玩家。

然后检查唯一值

palyers.Distinct().Count()==10

答案 1 :(得分:0)

这是怎么回事?

我尝试了一个带有一堆名字的组合框,还有一个列表框显示了在组合框中选择的10个玩家。我做了这样的条件:

如果您选择相同的名称,它将显示一条消息“检测到多个名称”。否则,如果你不这样做,你就可以在列表框中添加另一个名字。

所以我选择名字时会出现“预防”情况,而不是按下按钮时。

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

在组合框中使用这样的代码

Public Class frmMain

    Private cTokenSource As New CancellationTokenSource

    Sub btnStart(sender As Object, e As EventArgs) Handles btnStart.Click

        InitialiseTiles()
        Dim t As Task = Task.Factory.StartNew(Sub()
                                                  Dim ParallelOptions As New ParallelOptions() With {
                                                                                                .CancellationToken = cTokenSource.Token,
                                                                                                .MaxDegreeOfParallelism = txtNTasks.Text,
                                                                                                .TaskScheduler = Nothing
                                                                                                }

                                                  Parallel.ForEach(Tiles, ParallelOptions, Sub(aTile)
                                                                                               Try
                                                                                                   Dim myWebClient As New WebClient
                                                                                                   myWebClient.DownloadFile(TMS & aTile, TilePath & aTile)
                                                                                               Catch ex As Exception
                                                                                                   Debug.Print("Got a problem: " & ex.Message)
                                                                                               End Try
                                                                                           End Sub)
                                              End Sub)


    End Sub

    Private Sub btnAbort_Click(sender As Object, e As EventArgs) Handles btnAbort.Click
        cTokenSource.Cancel()
    End Sub

End Class

希望这会对你有所帮助,对不起我的英语不好。