Конфликтуют label4.Text = label4.Text.Remove(0); и label4.Text += $"{n.ToString()}, ";

При нажатии на кнопку выдаёт числа в label, кратные какому-то числу (задаётся). Если нужно второй раз вывести эти числа, нужно, чтобы сначала label очистился (т.к. в выводе стоит +=), а только потом выводил новое решение с другими числами. По отдельности label4.Text = label4.Text.Remove(0); и label4.Text += $"{n.ToString()}, "; работают. А вместе не хотят. Что я делаю не так?

        {
            int n = Convert.ToInt32(TextBox1.Text);
            int m = Convert.ToInt32(TextBox2.Text);
            int a = Convert.ToInt32(TextBox3.Text);
for (n = n; n <= m; n++)
        {
            int x = n % a;
            if (x == 0)
               {
                  label4.Text = label4.Text.Remove(0);
                  await Task.Delay(100);
                  label4.Text += $"{n.ToString()}, "; 
               }

Ответы (1 шт):

Автор решения: aepot

Вынесите очистку лейбла за цикл. Так же можно добавить обработку ошибок.

try
{
    int n = int.Parse(TextBox1.Text);
    int m = int.Parse(TextBox2.Text);
    int a = int.Parse(TextBox3.Text);
    label4.Text = "";
    for (int i = n; i <= m; i++)
    {
        int x = i % a;
        if (x == 0)
        {
            await Task.Delay(100); // как я понял, это для красоты здесь
            label4.Text += $"{i.ToString()}, "; 
        }
    }
}
catch (Exception ex)
{
    label4.Text = ex.Message;
}

Ну или вот более оптимальный вариант

try
{
    int n = int.Parse(TextBox1.Text);
    int m = int.Parse(TextBox2.Text);
    int a = int.Parse(TextBox3.Text);
    List<int> list = new List<int>();
    for (int i = n; i <= m; i++)
    {
        if (i % a == 0)
            list.Add(i);
    }
    label4.Text = string.Join(", ", list);
}
catch (Exception ex)
{
    label4.Text = ex.Message;
}

Или вообще вот так

try
{
    int n = int.Parse(TextBox1.Text);
    int m = int.Parse(TextBox2.Text);
    int a = int.Parse(TextBox3.Text);
    if (m > n)
        label4.Text = string.Join(", ", Enumerable.Range(n, m - n).Where(i => i % a == 0));
}
catch (Exception ex)
{
    label4.Text = ex.Message;
}
→ Ссылка