繁体   English   中英

对多个对象应用一个操作 C#

[英]Apply one action to multiple objects C#

我有不同的对象:6 个按钮、列表框和 5 个标签,这些名称就像 lblHum、lblCo2 ......

我需要一键显示或隐藏它们。

是否可以(不将对象放在面板或组框中)在 1 种方法中为所有对象应用例如Hide操作,而不为每个对象指定隐藏? private void(List<objects>,action)

由于所有控件都继承自同一个基础 class(即Control ),因此您可以使用通用方法并传入Action来执行此操作。 例如:

public void ApplyToAll<T>(IEnumerable<T> items, Action<T> action)
{
    foreach (var item in items)
    {
        action(item);
    }
}

并像这样调用方法:

var items = new List<Control> { lblHum, lblCo2... etc };

ApplyToAll(items, x => x.Visible = false);

你可以这样写:

public void HideAll(params Control[] controls)
{
     foreach(var control in controls) control.Hide();
}

像这样称呼它:

HideAll(lblHum, lblCo2,  etc);

或者更灵活的东西:

public void GroupAction(Action<Control> action, params Control[] controls)
{
    foreach(var control in controls) action(control);
}

然后这样称呼它:

GroupAction(c => c.Hide(), lblHum, lblCo2,  etc);

但是,在这两种情况下,集合仍然存在 你只是用一种方法隐藏它。 而且由于该方法相当简单,因此我不确定您是否比将集合直接放入您的代码中获得了太多价值。 也就是说,您可以将列表作为 class 表单的成员,并在表单初始化时添加控件。 然后,您可以随时循环遍历列表。

暂无
暂无

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

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