trivk96
trivk96

Reputation: 65

Dynamically call a label in c#

I am trying to call a label dynamically but have no idea how to do it.

I want to make a label visible depending on the integer.

So if int i = 1, then label1 should turn visible and if i = 2, then label2 should turn visible, and so on and so forth.

How do I do this?

int i = word.indexOf("t");
//This is where I need the label to be dynamically called

I tried ("label" + i.ToString()).Visible = true;" in a lazy attempt.

Upvotes: 1

Views: 839

Answers (2)

Brian Walters
Brian Walters

Reputation: 31

Label1.Visible = (i == 1); // if i is not 1, then label1 is not visible

Upvotes: 0

Cristian Lupascu
Cristian Lupascu

Reputation: 40586

Here's a dynamic solution:

foreach (var label in Controls.OfType<Label>())
    label.Visible = (label.Name == "label" + i);

Note that:

  1. this will hide all labels that are not named "label" + i. You may need additional filtering logic if there are any other labels on the form/container

  2. the above code works if the labels are direct descendants of the form. If that's not the case (for example, the labels are children of a panel called panel1), then you'll need to replace Controls with panel1.Controls

Upvotes: 3

Related Questions