#c# #.net #variables #integer #label
#c# #.net #переменные #целое #метка
Вопрос:
Хорошо, допустим, у меня есть целое число с именем abc
, и я устанавливаю abc в 2.
Как мне сказать label2.visible = true;
?
Я имею в виду, что если я установлю abc равным 3, я хочу сделать label3.visible = true;
Ответ №1:
Мне кажется, проще всего поместить ваши элементы управления в массив следующим образом:
Label[] labels = new Label[] { label0, label1, label2, label3 };
Переключите видимость следующим образом:
void SetVisibility(int index, bool visible)
{
labels[index] = visible;
}
Ответ №2:
Вы хотите использовать Control.FindControl
метод.
Label label = myForm.FindControl("label" val) as Label;
if (label != null)
{
// use...
}
Комментарии:
1. это похоже на то, что я хотел, но использование массивов выглядит короче и проще, точка.
Ответ №3:
Вы могли бы сделать что-то вроде этого:
var theLabel = (Label) this.Controls.Find("label" abc.toString());
theLabel.Visible = true;
Этот код непроверен и не укладывается у меня в голове, но он должен сработать.
Ответ №4:
Чтобы ответить на ваш актуальный вопрос, это, вероятно, возможно путем размышления, но не то, что вы действительно хотели бы сделать, я не могу придумать допустимый вариант использования.
Как уже писали другие, используйте массив.
Ответ №5:
C # на самом деле не поддерживает этот тип синтаксиса.
Поместите метки в некоторую структуру и используйте ее для манипулирования метками. Вот несколько примеров:
List<Label> labels = new List<Label>();
int i = /* some valid index (0 based) */
labels[i].visible = true;
Dictionary<string, Label> labelDict = new Dictionary<string, Label>();
labelDict.add("label1", label1);
labelDict["label1"].visible = true;
В качестве альтернативы вы могли бы получить метки из списка дочерних элементов управления родительской формы и настроить видимость таким образом.
Ответ №6:
Способ сделать это — иметь массив меток, а затем в соответствии с числом, которое вы можете сделать :
label_array[abc].visible = true;
Ответ №7:
Два простых примера
if(abc == 2)
{
label2.visible = true;
label3.visible = false;
}
else if(abc ==3)
{
label3.visible = true;
label2.visiable = false;
}
or use a switch statement
switch(abc)
{
case 2:
label2.visible = true;
break;
case 3:
label3.visible = true;
break;
}
Комментарии:
1. да, но это хорошо… не очень хорошо, на самом деле это сработает для 2 или 3 меток, но я действительно не хочу писать так много кода, когда у меня будет больше меток (что я и делаю).
2. Да, это не лучший подход, но я не знал вашего уровня программирования, поэтому я пытался помочь с идеей 🙂 … перейдите к примерам массива : D