Я обнаружил простую разницу, которая не была рассмотрена в этой теме.
Если вы делаете все ScrollToCarat()
звонки как часть Load()
события вашей формы , это не сработает. Я только добавил свой ScrollToCarat()
звонок в Activated()
событие моей формы , и он работает нормально.
редактировать
Важно выполнять эту прокрутку только при первом запуске Activated
события формы (не при последующих активациях), или она будет прокручивать каждую активации вашей формы, чего вы, вероятно, не хотите.
Так что, если вы перехватываете Activated()
событие только для прокрутки текста при загрузке программы, вы можете просто отписаться от события в самом обработчике события, таким образом:
Activated -= new System.EventHandler(this.Form1_Activated);
Если у вас есть другие вещи, которые вам нужно делать при каждой активации формы, вы можете установить bool
значение true в первый раз, когда вашActivated()
событие запускается, поэтому вы не прокручиваете последующие активации, но все же можете делать другие вещи, которые вам нужны делать.
Кроме того , если ваш TextBox
находится на вкладке , что не SelectedTab
, ScrollToCarat()
не будет иметь никакого эффекта. Так что вам нужно, по крайней мере, сделать его выбранной вкладкой во время прокрутки. Вы можете заключить код в пары « а» YourTab.SuspendLayout();
и « YourTab.ResumeLayout(false);
пара», если ваша форма мерцает при этом.
Конец редактирования
Надеюсь это поможет!