vb.net根据另一个按钮单击更改按钮

时间:2015-03-23 04:41:51

标签: vb.net button

我在表单上有一个包含80个按钮的表单。按钮的名称为Button0Button79。 如果单击一个按钮,我需要更改以下两个按钮的属性。

如果点击Button27,我需要更改Button28Button29的可见属性。我不能使用标签属性,因为它们已被用于其他目的。

我有一个Button_Click子,其中包含为所有按钮设置的句柄。建议?

1 个答案:

答案 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