我有10个与玩家组合的组合框。在每个组合框中必须选择一个玩家。现在,我必须验证它们,在组合框中只能选择一个独特的播放器。
例如:
combobox1 - Anna
combobox2 - Anna(太)
但如果安娜被选中,我不想在另一个组合框中选择她。或者我可以在点击按钮"开始游戏"上显示错误消息,在两个组合框中选择Anna。它必须验证的主要内容。我只有一个想法,我如何验证这一点,这不是最好的方式。
if cmbPlayer1.SelectedValue = cmbPlayer2.SelectedValue Or
cmbPlayer1.SelectedValue = cmbPlayer2.SelectedValue Or
...
cmbPlayer1.SelectedValue = cmbPlayer10.SelectedValue
等十个组合框中的每一个。
我怎样才能做得更好?
答案 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
希望这会对你有所帮助,对不起我的英语不好。