繁体   English   中英

使用变量引用对象(C#)

[英]Referencing objects using a variable (c#)

我一直在做一个程序,在执行过程中需要更改对象属性。 为了便于管理,我保留了原始对象名称,即“ button1”

我的问题是是否有一种方法可以通过循环更改变量来引用对象名称

我不得不写一些东西

private void disable ()
{
    this.button1.Visible = false;
    this.button2.Visible = false;
    this.button3.Visible = false;
    //...
}

我尝试过类似的东西

int a;
for(a=1;a==50;a++)
{
    this.buttona.Visible =false;
}

这显然没有用

那有没有办法我可以用变量引用对象呢?

提前致谢

您可以使用以下代码:

        foreach (var c in this.Controls)
        {
            if (c is Button button)
                button.Visible = false;
        }

或者这个:

        for (int i = 0; i < 50; i++)
        {
            var c = this.Controls["button" + i];
            (c as Button).Visible = false;
        }

如果您未执行UWP,WPF等,则此功能可能不起作用。如果您正在执行UWP,WPF等,则可能会有所帮助。 由于所有这些按钮都属于一个面板(我认为是这样),面板的子代或内容应该是IEnumerable对象,可以通过foreach循环对其进行处理。 例如,如果我具有以下XAML代码:

<Grid x:Name="myGrid">
    <Button x:Name="Button1" Tag="myButton1"/>
    <Button x:Name="Button2" Tag="myButton2"/>
    <!-- ... -->
</Grid>

我可以使用以下方法遍历按钮:

foreach(Button button in myGrid.Children){
    if(!button.Tag.StartsWith("myButton")) continue;
    button.Visibility = Visibility.Collapsed;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM