vb.net 根据另一个按钮的点击改变一个按钮
vb.net alter a button based on another button click
我有一个表单,上面有 80 个按钮。按钮被命名为 Button0
到 Button79
。
如果单击一个按钮,我需要更改以下两个按钮的属性。
例如,如果单击 Button27
,我需要更改 Button28
和 Button29
的可见 属性。我无法使用标签属性,因为它们已被用于其他目的。
我有一个 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
我有一个表单,上面有 80 个按钮。按钮被命名为 Button0
到 Button79
。
如果单击一个按钮,我需要更改以下两个按钮的属性。
例如,如果单击 Button27
,我需要更改 Button28
和 Button29
的可见 属性。我无法使用标签属性,因为它们已被用于其他目的。
我有一个 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