【问题标题】:How to create a list of panels already existing in WinForm Application (C#)如何创建 WinForm 应用程序 (C#) 中已存在的面板列表
【发布时间】:2023-03-06 08:32:01
【问题描述】:

上下文: 我正在为基于 Web 的应用程序创建模型。我使用 WinForms 应用程序来执行此操作。将来我将使用 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

【问题讨论】:

标签: c# arrays winforms list


【解决方案1】:

哎呀,好吧,我不会将 winforms 应用程序用于模型。有很多便宜的模型应用程序,如 balsamiq 之类的,或者如果你想提供视觉帮助,可以使用 gimp。

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

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

iE:

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;
        }
    }
}

编辑:您的问题的格式也很好,并且您提供了很多细节。就第一个问题而言,干得好!

【讨论】:

    【解决方案2】:

    如果面板是相同形式的Children,那么:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      相关资源
      最近更新 更多