Вывод строк в несколько textBox одновременно

256
18 апреля 2022, 05:10

У меня есть цикл:

string[] lines = File.ReadAllLines(@"F:\VS Projects\Со звёздочкой\diceware.txt");
for ( int i = 0; i <= lines.Length; i++)
{
                char[] textByCharacter = lines[i].ToCharArray();
                int number = object1.CharacterCheck(textByCharacter[0]);
                if (number == 1)
                {
                    textBox1.AppendText(lines[i] + "\t\t");
                }
                if (number == 2)
                {
                    textBox2.AppendText(lines[i] + "\t\t");
                }
                if (number == 3)
                {
                    textBox3.AppendText(lines[i] + "\t\t");
                }
                if (number == 4)
                {
                    textBox4.AppendText(lines[i] + "\t\t");
                }
                if (number == 5)
                {
                    textBox5.AppendText(lines[i] + "\t\t");
                }
                if (number == 6)
                {
                    textBox6.AppendText(lines[i] + "\t\t");
                }
            }

В этом цикле у меня по очереди заполняется каждый из шести textBox. Как реализовать, чтоб они заполнялись одновременно? Метод определения переменной number:

public int CharacterCheck(char character)
        {
            string symbol = System.Convert.ToString(character);
            if (symbol == "1")
            {
                transmitsTheNumber = 1;
            }
            if (symbol == "2")
            {
                transmitsTheNumber = 2;
            }
            if (symbol == "3")
            {
                transmitsTheNumber = 3;
            }
            if (symbol == "4")
            {
                transmitsTheNumber = 4;
            }
            if (symbol == "5")
            {
                transmitsTheNumber = 5;
            }
            if (symbol == "6")
            {
                transmitsTheNumber = 6;
            }
            return transmitsTheNumber;
        }
Answer 1

Во-первых, кучу однотипных if-else можно оформить через switch-case. Во-вторых, можно сделать лучше.

public int CharacterCheck(char character)
{
    if (int.TryParse(character.ToString(), out int digit) && digit > 0 && digit < 7)
    {
        return digit;
    }
    return 0;
}

К символам в строке можно обращаться напрямую без преобразования в массив символов.

string[] results = Enumerable.Repeat(string.Empty, 6).ToArray(); // массив пустых строк
for (int i = 0; i < lines.Length; i++)
{
    int number = object1.CharacterCheck(lines[i][0]);
    if (number != 0)
        results[number - 1] += lines[i] + "\t\t";
}
textBox1.Text = results[0];
textBox2.Text = results[1];
textBox3.Text = results[2];
textBox4.Text = results[3];
textBox5.Text = results[4];
textBox6.Text = results[5];

Многпоточные вычисления здесь имеют очень мало смысла, потому что, как вы сказали, 6000 строк - это очень мало, и выполнится очень быстро. Во-вторых здесь можно еще ускорить код. В-третьих у вас было 6000 обращений к текстбоксам, стало в 1000 раз меньше. И в-четвертых отрисовка формы может быть ускорена с помощью двойной буферизации.

READ ALSO
Проверка PlayerPrefs.HasKey по типу String не реагирует. Unity3D

Проверка PlayerPrefs.HasKey по типу String не реагирует. Unity3D

Есть переменная Nickname типа string и десяток переменных типа intВсе они прекрасно записываются в реестр и там отображаются, но при попытке подгрузить...

141
СДК для трекинга в юнити? [закрыт]

СДК для трекинга в юнити? [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

144
Как сделать управление для 2D персонажа в Unity на ПК, без двойного прыжка и с поворотом игрока в разные стороны

Как сделать управление для 2D персонажа в Unity на ПК, без двойного прыжка и с поворотом игрока в разные стороны

Как сделать управление для 2D персонажа в Unity на ПК, без двойного прыжка и с поворотом игрока в разные стороны

165
Задача на С#: В чем ошибка?

Задача на С#: В чем ошибка?

Напишите функцию, вычисляющую длину отрезка по координатам его концовС помощью этой функции напишите программу, вычисляющую периметр треугольника...

127