Что происходит не так
Я считаю, что это очень необычный способ делать вещи. Итак, сначала давайте добавим небольшой фон:
Когда вы используете richTextBox1.Controls.Add(new button())
- то, что вы делаете: вы добавляете новую кнопку как дочерний из richtextbox
, а не как контент - и это проблема.
Полосы прокрутки настроены на считывание их высоты / области прокрутки и т. д. c из содержимого richtextbox
, и у вас нет содержимого, следовательно, нет полосы прокрутки (или ложные показания и т. д. c).
Вы можете создать пользовательский элемент управления richtextbox, который наследует область прокрутки от расположения дочерних элементов управления. Однако, если вы предпочитаете избегать этого маршрута, пожалуйста, продолжайте читать:
Правильный путь
Я не знаю ваш вариант использования, поэтому это может не сработать, но я бы удалил richtextbox
контролировать и вместо этого использовать panel
контроль. Например, панель управления обновит свои полосы прокрутки на основе дочерних элементов управления, тогда как richtextbox
не будет - и это должно дать вам ожидаемое поведение.