none
Не редактируется текст в TextBox, (StringBuilder) RRS feed

  • Вопрос

  • При написании такого кода:

    private void button1_Click(object sender, EventArgs e)
            {
                StringBuilder List = new StringBuilder();
    
                for (int i = 0; i <= 5000; i++)
                {
                    List.Append(string.Format("Test String #{0}{1}", i,Environment.NewLine));
                }
                textBox1.Text = List.ToString();
            }

    После заполнения textBox1 я не могу редактировать в нём текст (могу только удалять буквы/строки), причём если сделать меньше итераций (например: i <= 100), то текст редактировать можно. Есть ли этому объяснение. Как вылечить?

    11 марта 2015 г. 11:06

Ответы

  • Если речь о WinForms, у элемента TextBox имеется ограничение на количество интерактивно вводимых символов (свойство MaxLength). Таким образом, пока длина текста (свойства Text) больше, чем MaxLength - редактирование невозможно.

    P.S. Впрочем, В WPF тоже самое.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!


    • Изменено kosuke904 11 марта 2015 г. 14:26 Дополнение
    • Предложено в качестве ответа kosuke904 13 марта 2015 г. 6:52
    • Помечено в качестве ответа YatajgaModerator 21 марта 2015 г. 13:27
    11 марта 2015 г. 14:24

Все ответы

  • Если речь о WinForms, у элемента TextBox имеется ограничение на количество интерактивно вводимых символов (свойство MaxLength). Таким образом, пока длина текста (свойства Text) больше, чем MaxLength - редактирование невозможно.

    P.S. Впрочем, В WPF тоже самое.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!


    • Изменено kosuke904 11 марта 2015 г. 14:26 Дополнение
    • Предложено в качестве ответа kosuke904 13 марта 2015 г. 6:52
    • Помечено в качестве ответа YatajgaModerator 21 марта 2015 г. 13:27
    11 марта 2015 г. 14:24
  • Сказано верно, по этому можно добавить условия по сравнения текущего обьёма List с textBox1.MaxLenght и ваш текст напечатается 1752 раз и его можно редактировать 

     private void button1_Click(object sender, EventArgs e)
            {
           
                StringBuilder List = new StringBuilder();
    
                for (int i = 0; i <=5000; i++)
                {
                    if (List.Capacity< textBox1.MaxLength)
                    List.Append(string.Format("Test String #{0}{1}", i,Environment.NewLine));
                }
                textBox1.Text = List.ToString();
            }

    11 марта 2015 г. 15:49