#c_sharp #winforms
Можно присвоить 4 разные значения, четырем лейблам в одной строке?
Например нужно присвоить значения: 24, 22, 18, 8 четырем лейблам (label1, label2,
label3, label4) в одной строке?
И еще второй вопрос: Как присвоить четырем лейблам одно значение, в одной строке?
Например нужно присвоить четырем лейблам следующее: Central Areas.
Ответы
Ответ 1
Зачем вам это? Понятность кода от этого не улучшится. Но если очень хочется, то в C# 7+ используйте (label1.Text, label2.Text, label3.Text, label4.Text) = ("24", "22", "18", "8"); Присвоить одинаковое значение ещё проще: label1.Text = label2.Text = label3.Text = label4.Text = "Central Areas"; Кстати, в документации деконструкция кортежей в уже существующие переменные упоминается лишь вскользь, и не показана ни на одном примере. Поэтому этой возможностью пользуются пока не так часто. Оставаясь в рамках C# 4, вы можете сделать такой хак. Присвоение label1.Text = "24" является выражением. Выражения можно сцепить, чтобы они поместились в одну строку, например, приведя их к типу bool: ((label1.Text = "24") == null) & ((label2.Text = "22") == null) & ((label3.Text = "18") == null) & ((label4.Text = "8") == null) Чтобы компилятор не ругался на отдельно стоящее выражение, результат можно присвоить переменной: bool dummy = ((label1.Text = "24") == null) & ((label2.Text = "22") == null) & ((label3.Text = "18") == null) & ((label4.Text = "8") == null); (Я использовал & вместо &&, потому что в этом случае не используется сокращённое вычисление (short-circuiting).)Ответ 2
Не в одну, конечно, строку, но если label'ов будет очень много, то можно в цикле: string[] array = new string[4] {"1","2","3","4"}; for(int i = 0; i < 4; i++) this.Controls["label" + (i + 1).ToString()].Text = array[i];Ответ 3
Еще можно через метод делать, хоть это и не лучший вариант. public void SetLabelValue(String s1, String s2, String s3, String s4) { labelChance11.Text = s1; labelChance21.Text = s2; labelChance31.Text = s3; labelChance41.Text = s4; } и после вставить в коде туда, где нужно присваивать лейблам значения: SetLabelValue("24", "22", "18", "8");
Комментариев нет:
Отправить комментарий