Можно присвоить 4 разные значения, четырем лейблам в одной строке?

309
16 ноября 2017, 01:48

Можно присвоить 4 разные значения, четырем лейблам в одной строке?

Например нужно присвоить значения: 24, 22, 18, 8 четырем лейблам (label1, label2, label3, label4) в одной строке?

И еще второй вопрос: Как присвоить четырем лейблам одно значение, в одной строке? Например нужно присвоить четырем лейблам следующее: Central Areas.

Answer 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).)

Answer 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];
Answer 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");
READ ALSO
Button не отжимается после выполнения Command

Button не отжимается после выполнения Command

Иногда кнопка после выполнения команды не становится активнойПомогает клик по форме

235
UDP передача потокового видео

UDP передача потокового видео

Почитал какой лучше протокол использовать для передачи потокового видео и везде говорится, что для этого лучше подходит UDPНо при реализации...

243
Смена языка приложения winforms в рантайме

Смена языка приложения winforms в рантайме

Есть приложение у которого для каждой формы есть Resource-файлы для разных языков - EN, DE, RU и тд

227
Событие на изменение члена класса

Событие на изменение члена класса

Событие на отслеживание изменения переменной выглядит так:

229