我有一个问题,我和我有限的经验无法弄清楚。
我有一个多显示(表格)程序,用于使用(5)显示系统的游戏节目系统。当我正在整理这个项目时,我一直在做一些管家和预先处理一些潜在的用户错误。
在这种情况下:有一个名为GameSetup
的表单,其中包含通过数据库选择“团队”填充的下拉菜单。选择Team
后,(10)标签将填入注册的团队成员。用户将团队成员(即玩家)拖放到一组(6)标签上,这些标签将构成游戏的活跃团队。
问题:我希望检查何时将名称添加到活动团队名单中以确保没有重复项。我认为,最干净的方法是在活动玩家标签的.TextChanged
动作上,并使用For
循环来检查其他活跃的团队玩家名称。
Private Sub lblT1_P1_TextChanged(sender As Object, e As EventArgs) Handles lblT1_P1.TextChanged
cmdReady.BackColor = Color.Yellow
For i = 1 To 6
If i = 1 Then
' Do nothing
ElseIf Me.Controls("lblT1_P" & i.ToString).Text = lblT1_P1.Text Then 'This is the line triggering the NullException
MsgBox("This Player is already selected. Please choose another Player", MsgBoxStyle.OkOnly)
Me.Controls("lblT1_P" & i.ToString).Text = "DRAG PLAYER HERE" 'This is the other line triggering the NullException
End If
Next i
End Sub
i = 1 Do Nothing
是不会与自身进行比较(在本例中)
当我运行程序(de-bug)时,在表单GameSetup
加载之前,我得到一个Null Exception,这是有意义的,因为它正在查看表单中的表单或对象尚未初始化。显然,Me.Controls
是问题,但我不知道如何处理在For循环中使用整数(i)。
标签名称为lblT1_P1
- lblT1_P6
(每组3个实例(T1 / T2 / T3)。我目前只处理T1_P1
。
任何建议都将不胜感激。
答案 0 :(得分:0)
使用string.Format()生成控件名称,因为它更具可读性。
取代 Me.controls(“lblName”)。文字 使用 DirectCast(Me.FindControl(“lblName”),Label).Text