Вычислите высоту asp:текстовое поле (текстовая область) без разрывов строк

#c# #asp.net #textbox #textarea #height

Вопрос:

У меня есть текстовое поле asp: (которое отображается как область текста), и мне нужно рассчитать высоту этого текстового поля, чтобы оно соответствовало содержимому для печати. Я вычисляю высоту текстовой области с помощью этого кода:

 // get the number of lines 
int numberOflines = txtText.Text.Split(new Char[] { 'n' }, 
    StringSplitOptions.RemoveEmptyEntries).Length;
    
//calculate the target hight of the textBox
txtText.Rows = numberOflines;
txtText.Style.Add("height", TextBoxHeight.calculate(11, 8, numberOflines, 9999999) 
      "px;");
 

Код работает нормально — до тех пор, пока для каждой строки есть разрыв строки, но если это не так, то результирующая высота будет небольшой. Как я могу получить правильную высоту независимо от разрывов строк?

Я пробовал несколько способов с помощью javascript, но они требуют действий пользователя, таких как onkeyup (в моем случае пользователи могут изменять текст, но им не нужно этого делать), или они также выполняют некоторые вычисления, основанные на количестве взломов строк.

Заранее спасибо.

Ответ №1:

Если у вас есть надежный метод, который работает после какого-то взаимодействия с пользователем, например onkeyup, почему бы просто не запустить его сначала вручную, прежде чем использовать надежный метод?

    $(document).ready(function(){ 
     $("button").click( function(){
       $("#txt").trigger("onkeyup");  // manually invoke keyup event
     });
   });

  <button>Manual trigger keyup</button>
  <input type="text" onkeyup="alert('up');" id="txt" />
 

Комментарии:

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

2. Пользователю на самом деле не нужно вводить какие-либо реальные данные с помощью вышеуказанного метода. Вы имитируете ввод данных пользователем с помощью строки .trigger (), а затем используете любой метод, который сработал бы, если бы они действительно выполнили какой-либо ввод.