使用变量(c#)引用对象
我一直在做一个程序,需要在执行过程中更改对象属性。为了便于管理,我保留了原始对象名称,即“button1” 我的问题是,是否有一种方法可以通过变量引用对象名,并通过循环进行更改 我不得不写一些像这样的东西使用变量(c#)引用对象,c#,C#,我一直在做一个程序,需要在执行过程中更改对象属性。为了便于管理,我保留了原始对象名称,即“button1” 我的问题是,是否有一种方法可以通过变量引用对象名,并通过循环进行更改 我不得不写一些像这样的东西 private void disable () { this.button1.Visible = false; this.button2.Visible = false; this.button3.Visible = false; //... } 我试过类似的
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;
}
for(int i=0;i<50;i++)
{
var c=此。控制[“按钮”+i];
(c为按钮)。可见=假;
}
如果您不执行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循环或带有索引变量的for循环遍历它们。此外,我建议正确命名按钮-虽然我知道使用默认名称很容易,但如果您或其他人必须维护代码,这将导致您出现问题,这将大大增加引入错误和其他一些有趣内容的可能性。这可能是一个错误。在我看来,你想隐藏50个按钮。将它们放在一个公共控件(如面板)中并隐藏面板而不是其他按钮可能更有效。若您希望按钮的共享行为超出可见性,则需要一个数组或集合;通常,将这些按钮放在面板上并隐藏面板比较容易。我在代码上创建按钮时使用:
private Button button1=new Button()代码>但是,当我为变量赋值时:var c=this.Controls[“button”+num.ToString()]
它确实返回null,并且不允许我使用以下命令初始化它:this.Controls.Add(c as按钮)代码>或使用以下命令更改属性:(c作为按钮)。位置=新点(30,90)代码>我是否缺少一些使用引用或可能发生的情况?提前感谢@brandonminick您是否将button1添加到表单的控件集合:this.controls.Add(button1),他们在这个名单上吗?您是否设置了“名称”字段:button1.Name=“button1”?
foreach(Button button in myGrid.Children){
if(!button.Tag.StartsWith("myButton")) continue;
button.Visibility = Visibility.Collapsed;
}