如何创建WinForm应用程序中已存在的面板列表(C#)

时间:2014-09-15 19:52:00

标签: c# arrays winforms list

上下文: 我正在为基于Web的应用程序创建模型。我使用WinForms Application来做到这一点。将来我将使用WebForms,但这个问题适用于我确定。

问题: 我有透明的面板,我放在一个网页大小的图片框上。这些面板充当可点击的链接"到"导航"到"页面"。

实际上,当单击面板时,图片框(用作背景)将更改为不同网页的屏幕截图,从而呈现Web导航的外观。这些面板充当用户点击导航的东西的掩码。

我想将这些现有面板添加到列表中以便更改它们。 例如,我想将其.Enabled属性设置为false;在一个声明中。

我目前通过这样做来实现这一目标:

    public void TurnOffPanels()
    {
        aPnl.Enabled = false;
        bPnl.Enabled = false;
        cPnl.Enabled = false;
        dPnl.Enabled = false;
        ePnl.Enabled = false;
        fPnl.Enabled = false;
    {

我的问题是:如何使用我的面板列表对此进行编码?

PS:这是我在这里的第一个问题,所以请随意指责我的格式,noobness ... whateves

2 个答案:

答案 0 :(得分:2)

Oof,好吧,我不会将winforms应用程序用于模型。有很多便宜的模型应用程序,如balsamiq等,或者如果你想提供视觉辅助,那就是gimp。

然而,我认为你的意思是说你正在开发"原型"在winforms。原型允许人们进行交互,而模型只是平面图像。

无论如何,如果你想隐藏一个面板列表,你可以在你要闪烁的面板的代码隐藏中创建一个字段,然后就可以对它进行操作。

即:

public class Form {
    List<Panel> myPanels = new List<Panel>();
    public Form() {
          myPanels.Add(aPnl);
          myPanels.Add(bPnl);
          //etc
    }
    public TurnOffPanels(){
        foreach(var panel in myPanels){
             panel.Enabled = false;
        }
    }
}

编辑:此外,您的问题格式正常,并且您提供了大量详细信息。就第一个问题而言,干得好!

答案 1 :(得分:0)

如果小组是相同形式的儿童,那么:

foreach(Panel p in this.Controls)
     p.Enabled = false;