我在表单上有一个包含80个按钮的表单。按钮的名称为Button0
到Button79
。
如果单击一个按钮,我需要更改以下两个按钮的属性。
如果点击Button27
,我需要更改Button28
和Button29
的可见属性。我不能使用标签属性,因为它们已被用于其他目的。
我有一个Button_Click
子,其中包含为所有按钮设置的句柄。建议?
答案 0 :(得分:1)
使用Controls.Find
方法。
private void NextButtonsVisibility(Button btnStart, int nextCount = 2, bool visible = true)
{
const string buttonNameKey = "Button";
var name = btnStart.Name; //name must be "Button#"
var btnIndexStr = name.Substring(buttonNameKey.Length);
var btnIndex = int.Parse(btnIndexStr);
for (int i = 1; i <= nextCount; i++)
{
var btnNext = Controls.Find(buttonNameKey + (btnIndex + i), true).OfType<Button>().FirstOrDefault();
if (btnNext != null)
btnNext.Visible = visible;
}
}
PS:如果按钮名称与规则不匹配,将抛出异常。
编辑 忘记了VB.NET标记。
Private Sub NextButtonsVisibility(btnStart As Button, Optional nextCount As Integer = 2, Optional visible As Boolean = True)
Const buttonNameKey As String = "Button"
Dim name = btnStart.Name 'name must be "Button#"
Dim btnIndexStr = name.Substring(buttonNameKey.Length)
Dim btnIndex = Integer.Parse(btnIndexStr)
For i As Integer = 1 To nextCount
Dim btnNext = Controls.Find(buttonNameKey & btnIndex + i, True).OfType(Of Button)().FirstOrDefault()
If btnNext IsNot Nothing Then
btnNext.Visible = visible
End If
Next
End Sub