【问题标题】:panel's different controls to list要列出的面板的不同控件
【发布时间】:2012-11-21 20:42:27
【问题描述】:

我有一个panel,其中包含控件。控件是buttonsprogressbars。我只想将按钮添加到list,我该怎么做?

foreach (Control item in panel1.Controls)
{
    //if (item.GetType() == typeof(ButtonControl))   //i tried this too...
    if ((item is ButtonControl) && (item.Tag.ToString() == "It's not important"))
    {                        
        panel1.BtnList.Add(item);
    }
}

这里ButtonControl是我自己的Control,继承自Button类。

【问题讨论】:

    标签: c# winforms controls panel


    【解决方案1】:

    使用 LINQ 可以为 System.Windows.Forms.Button 执行操作

    List<Button> buttonList = panel1.Controls.OfType<Button>().ToList();
    

    如果你也想检查标签值,那么你可以这样做

    List<Button> buttonList = panel1.Controls.OfType<Button>()
                                             .Where(r => r.Tag.ToString() == "It's not important")
                                             .ToList();
    

    编辑: 如果ButtonControl 是您自己的课程,那么您可以这样做:

     List<ButtonControl> buttonList = panel1.Controls.OfType<ButtonControl>().ToList();
    

    【讨论】:

    • 是的,太好了,谢谢!但我想在之前将我的列表指定为 Button Type...(Buttoncontrol 是我自己的控件,它继承自 Buttons 类...)
    • @user1807523,在这种情况下你可以使用OfType&lt;ButtonControl&gt;
    • @user1807523,您要从面板中获取ButtonControl 并添加Button 列表吗?
    • @Habib 只是想知道,OP 在他/她的代码中做错了什么?
    • 否则我也是... :) 错误在这里:panel1.BtnList.Add(item); 据说,我想在 ButtonControl 列表中添加一个非 ButtonControl 类型的按钮...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2023-03-23
    • 2011-08-04
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多