James
James

Reputation: 75

How to use an array to hold controls in form and hide/show them

I'm still new at coding. I'm making a calculator but I also want a lot of other things in it. like a conversion calculator, cook book, and kanji radical dictionary in c# WindowsFormsApplication I want to change from one to the next using a comboBox so I was going to make a array with all the control I wish to hide/show

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

But it tell me there no definition for 'Hide' but when I switch numList[i] to button0 it work but I don't wish to wright the same 11 control for every time i add something to the comboBox anyway to fixes this or any other method

Upvotes: 0

Views: 1199

Answers (3)

Juan
Juan

Reputation: 3705

You are keeping a list of strings, you should actually add the buttons in to the list in order to have the Hide method visible

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

Upvotes: 0

Salah Akbari
Salah Akbari

Reputation: 39946

If you want to hide all Buttons then try this:

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

This iterate through all Buttons of the form and hide them. But if you want to just hide a specific buttons then you can set the Tag property of that buttons to something like OP then to hide only that Buttons:

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

Or with linq:

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

Upvotes: 2

Darshan Faldu
Darshan Faldu

Reputation: 1601

try below code

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

Upvotes: 1

Related Questions