如何使用数组保存窗体中的控件并隐藏/显示它们

本文关键字:隐藏 显示 控件 数组 何使用 保存 窗体 | 更新日期: 2023-09-27 18:22:37

我对编码还是个新手。我正在制作一个计算器,但我也想在里面放很多其他东西。比如转换计算器、烹饪书和c#WindowsFormsApplication中的汉字偏旁字典。我想使用comboBox从一个到下一个进行更改,所以我要制作一个数组,其中包含我希望隐藏/显示的所有控件

string[] numList = {"button0","button1","button2", "button3"};//this will have all number and .
for (int i = 0; i < numList.Length; i++)
{
    numList[i].Hide();
}

但它告诉我"隐藏"没有定义,但当我将numList[i]切换到button0时,它可以工作,但我不希望每次向comboBox添加东西时都编写相同的11控件来修复这个或任何其他方法

如何使用数组保存窗体中的控件并隐藏/显示它们

如果您想隐藏所有Buttons,请尝试以下操作:

foreach (Button control in Controls.OfType<Button>())
{
    (control).Hide();
}

这将遍历表单的所有Buttons并隐藏它们。但是,如果您只想隐藏特定的按钮,那么您可以将该按钮的Tag属性设置为类似OP的属性,然后只隐藏该Buttons:

foreach (Button control in Controls.OfType<Button>())
{
     if (control.Tag.ToString() == "OP")
     {
          (control).Hide();                    
     }
}

或者使用linq:

foreach (Button control in Controls.OfType<Button>().Where(control => control.Tag.ToString() == "OP"))
{
     (control).Hide();
}

尝试以下代码

private void btnHide_Click(object sender, EventArgs e)
{
    string[] buttonList = { "button1", "button2", "button3" };
    for (int i = 0; i < buttonList.Length; i++)
    {
        Control[] ctrl = this.Controls.Find(buttonList[i], true);
        ((Button)ctrl[0]).Visible = false;
    }
}

您保留了一个字符串列表,实际上应该将按钮添加到列表中,以便使Hide方法可见

Control[] numList = {button0, button1, button2, button3 };