带变量名的面板控件
Panel control with variable name
我有25个面板控件(Visible false)。
我想让它可见。
但它不起作用:
(错误 1 'string' 不包含 'Visible' 的定义,并且找不到接受类型 'string' 的第一个参数的扩展方法 'Visible'(您是否缺少 using 指令或装配参考?)
)
for (int i = 0; i < 25; i++)
{
string panelID = "panel" + i.ToString();
panelID.Visible = true;
}
帮助
你的代码在很多方面都是错误的。
实际上,您正在做的是创建 25 个字符串,其值为 panel0
、panel1
、panel2
等,并尝试为 属性 的。但是字符串不包含名为 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;
}
}
我有25个面板控件(Visible false)。 我想让它可见。
但它不起作用: (错误 1 'string' 不包含 'Visible' 的定义,并且找不到接受类型 'string' 的第一个参数的扩展方法 'Visible'(您是否缺少 using 指令或装配参考?) )
for (int i = 0; i < 25; i++)
{
string panelID = "panel" + i.ToString();
panelID.Visible = true;
}
帮助
你的代码在很多方面都是错误的。
实际上,您正在做的是创建 25 个字符串,其值为 panel0
、panel1
、panel2
等,并尝试为 属性 的。但是字符串不包含名为 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;
}
}