一次更改多个元素的 Visible 属性

问题描述 投票:0回答:2

在这段代码中,我有几个元素,如文本框和按钮,根据情况,有些是可见的,有些是不可见的,就像这样(还有更多元素):

txtTipCOP.Visible = true;
lblIngreseCantidad.Visible = true;
lblEquivale.Visible = true;
txtTCDolar.Visible = false;
txtTCEuro.Visible = false;
btnCantidadInicio.Visible = false;
btnEquivaleInicio.Visible = false;
txtCantidad.Visible = false;
txtEquivalen.Visible = false;                    

我想优化代码,但我不知道如何控制几个

Visible
属性为1 true,这可能吗?

感谢您的宝贵时间。

我正在单独更改每个

Visible
属性,但我认为这不是最佳方法?

c# .net boolean visible
2个回答
0
投票

如果您希望将所有这些控件设置为 Visible = true,您可以创建一个 foreach 循环。根据您的需要修改以下内容。

foreach (Control control in Page.Controls)
{
        if (control is TextBox || control is Label) // whatever controls you want
        {
            control.Visible = false;
        }
}

但是就性能而言,它可以忽略不计,因为如果你单独设置它们,它会执行相同的操作。就我个人而言,我会选择更易于维护的。


0
投票

简单地说,你可以这样做:

txtTipCOP.Visible = 
lblIngreseCantidad.Visible =
lblEquivale.Visible = true;
        
txtTCDolar.Visible = 
txtTCEuro.Visible =
btnCantidadInicio.Visible =
btnEquivaleInicio.Visible =
txtCantidad.Visible = 
txtEquivalen.Visible = false;

更好的方法可能是这样的:

Control[] controls = new Control[]
{
    txtTipCOP,
    lblIngreseCantidad,
    lblEquivale,
    txtTCDolar,
    txtTCEuro,
    btnCantidadInicio,
    btnEquivaleInicio,
    txtCantidad,
    txtEquivalen,
};

controls.Take(3).ForEach(c => c.Visible = true);
controls.Skip(3).ForEach(c => c.Visible = false);

或者:

foreach (Control control in controls.Take(3))
    control.Visible = true;

foreach (Control control in controls.Skip(3))
    control.Visible = false;

如果您没有

.ForEach
扩展方法,您可以使用
.ToList().ForEach
代替。

© www.soinside.com 2019 - 2024. All rights reserved.