带有可变名称的面板控件



我有25个面板控件(可见false)。我想让它可见。

但这没有工作:(错误1"字符串"不包含"可见"的定义,也没有扩展方法"可见"接受类型"字符串"的第一个参数(您是否缺少使用指令或汇编引用?))

for (int i = 0; i < 25; i++)
{
    string panelID = "panel" + i.ToString();
    panelID.Visible = true;
}

帮助

您的代码在许多方面都是错误的。

,您正在做的是创建25个带有值panel0panel1panel2等的字符串,并试图为其属性分配值。但是字符串不包含名为 Visible的属性,所以显然您会遇到错误。

您想做的是在您的表单中掌握对Panel类型的控制,并设置其值。

foreach(var panel in this.Controls.OfType<Panel>())
{
    panel.Visible = true;
}

警告:以上只能以最上方的形式找到Panel控件。如果有嵌套的控件,您可能需要编写一种递归找到它们的方法。以上只是为了给你这个主意。

此外,如果您有多个Panel控件,并且如果您只想设置这些面板名称的属性适合您的命名约定,则可以将其过滤掉。

foreach(var panel in this.Controls.OfType<Panel>())
{
    if( panel name fits your naming convention)
        panel.Visible = true;
}

在这里,您可以使用Regex寻找正确的面板名称,使用自定义功能等。

您可以将所有动态创建的面板存储到一个集合中,您可以从中以其名称引用它们。这样的收藏是字典。

public class Form1 : Form
{
    Dictionary<string, Panel> panels = new Dictionary< string, Panel>();
    public void Form1_Load(object sender, EventArgs e)
    {
        for (var i = 0; i < 25; I++)
        {
             Panel panel = new Panel();
             panel.Name = "panel" + i.ToString();
             this.Controls.Add(panel);
             panels.Add(panel.Name, Panel);
         }
     }
}

现在您可以使它们可见/不可见如下。

private void ShowHidePanel(int panelNumber, bool visible)
{
    panels["panel"+panelNumber.ToString()].Visible = visible ;
}

或者要显示或隐藏所有可以按照以下操作的面板。

private void ShowHidePanels(bool visible)
{
    for (var i = 0; i < 25; i++)
    {
         panels["panel" + i.ToString()].Visible = visible;
    }
}

相关内容

  • 没有找到相关文章

最新更新