vb.net 根据另一个按钮的点击改变一个按钮

vb.net alter a button based on another button click

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

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

我有一个 Button_Click sub,所有按钮都设置了手柄。建议?

使用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