我有一个用户表单与一组类似的属性和功能的命令按钮。我使用这些按钮让用户跟踪他的活动。例如,每当用户点击"production“按钮时,应用程序标签将显示"production”模式,当用户按下"Break“按钮时,标签将从"production”模式变为"Break“模式,类似地,我在相同的表单上总共有7-8个按钮。其他情况是,无论按下哪个按钮,都应禁用该按钮并启用所有其他按钮,然后是下一步按钮,如果按下该按钮,则应禁用该按钮,并应启用先前按下的按钮。
已经被按下的按钮也应该改变它的颜色,并且还应该把上一个按钮的颜色改回正常。
我知道这是很难理解的场景,请检查下面的代码,我的一个按钮,它工作正常。
Private Sub btn1()
Me.Label78.Caption = Me.btn1.Caption
Me.btn1.BackColor = RGB(250, 100, 100)
Me.btn1.Gradient = 12
Me.btn1.Enabled = False
Me.btn2.Enabled = True
Me.btn2.BackColor = RGB(100, 250, 100)
Me.btn2.Gradient = 12
Me.btn3.Enabled = True
Me.btn3.BackColor = RGB(100, 250, 100)
Me.btn3.Gradient = 12
End Sub上面的代码完美地工作,并将属性更改为3个按钮(它的示例代码不是所有7个按钮的代码),但我总共有7-8个按钮,我可能会在未来添加更多的按钮,所以如果我继续在一个按钮中为所有7-8个按钮编写这种代码,那么将花费大量的时间和精力。
那么,缩短这段代码的最佳方式是什么呢?
我知道这有点复杂,因此请询问是否需要更多的信息。提前感谢!!
发布于 2017-12-22 16:44:48
你可以有一个helper子函数:
Private Sub SetButton(ByVal ButtonId As Long, ByVal Enabled As Boolean)
Dim BackColor As Long
If Enabled Then
BackColor = RGB(100, 250, 100)
Else
BackColor = RGB(250, 100, 100)
End If
With Me("btn" & Cstr(Id))
.Enabled = Enabled
.Gradient = 12
.BackColor = BackColor
End With
End Sub然后在OnClick事件中调用它,如下所示:
For Id = 1 To 8
Select Case Id
Case 1, 2, 4, 7
SetButton Id, True
Case Else
SetButton Id, False
End Select
Nexthttps://stackoverflow.com/questions/47933090
复制相似问题