Предельное количество строк в текстовом поле .NET

То же, что и другие ответы, в стиле jQuery:

$.each(selectValues, function(key, value) {   
     $('#mySelect')
         .append($("<option></option>")
                    .attr("value",key)
                    .text(value)); 
});
13
задан Ramesh Soni 26 June 2009 в 10:52
поделиться

4 ответа

Вам нужно проверить

txtbox.Lines.Length

Вам нужно обработать это для 2 сценариев: 1. Пользователь вводит текст в текстовое поле 2. Пользователь вставил текст в текстовое поле

Пользователь вводит текст в текстовом поле

Вам необходимо обработать событие нажатия клавиши текстового поля, чтобы пользователь не вводил больше строк при превышении максимального количества строк.

private const int MAX_LINES = 10;

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (this.textBox1.Lines.Length >= MAX_LINES && e.KeyChar == '\r')
    {
        e.Handled = true;
    }
}

Я протестировал приведенный выше код. Он работает должным образом.

Пользователь вставляет текст в текстовое поле

Чтобы пользователь не вставлял больше, чем максимальное количество строк, вы можете закодировать обработчик события изменения текста:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (this.textBox1.Lines.Length > MAX_LINES)
    {
        this.textBox1.Undo();
        this.textBox1.ClearUndo();
        MessageBox.Show("Only " + MAX_LINES + " lines are allowed.");
    }
}
13
ответ дан 2 December 2019 в 00:58
поделиться

В зависимости от того, чего вы пытаетесь достичь, есть также свойство MaxLength, чтобы установить количество символов, которое вы можете ввести в текстовое поле (поскольку строка может иметь переменную длину).

0
ответ дан 2 December 2019 в 00:58
поделиться

Хорошо. Как насчет определения переменной экземпляра "lastKnownGoodText" и выполнения чего-то вроде этого:

private void textBox_TextChanged (object sender, EventArgs e) {
    if (textBox.Lines.Length > 10)
        textBox.Text = lastKnownGoodText;
    else
        lastKnownGoodText = textBox.Text;
}
-2
ответ дан 2 December 2019 в 00:58
поделиться

Ограничить MAX_LINES с усечением для копирования / вставки.

    private void textBox1_KeyDown( object sender, KeyEventArgs e )
    {
        if ( textBox1.Lines.Length >= MAX_LINES && e.KeyValue == '\r' )
            e.Handled = true;
    }

    private void textBox1_TextChanged( object sender, EventArgs e )
    {
        if ( textBox1.Lines.Length > MAX_LINES )
        {
            string[] temp = new string[MAX_LINES];
            for ( int i = 0; i < MAX_LINES; i++ )
            {
                temp[i] = textBox1.Lines[i];
            }

            textBox1.Lines = temp;
        }
    }
0
ответ дан 2 December 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: