Ключ заключается в том, чтобы использовать ScrolledWindow вместо области просмотра и распределять настройки между ScrolledWindows.Окно просмотра просто прокручивает виджет, который слишком велик для размещения в контейнере.С другой стороны, ScrolledWindow связывает свои настройки с корректировками TextView, на которые влияет перемещение курсора.
Мне удалось заставить это работать, связав настройки между ScrolledWindows, скрыв их полосы прокрутки, а затем поместив ихв одном большом ScrolledWindow, который просто управляет всеми полосами прокрутки подокна (которые не показаны).
Ниже приведено полное решение кода в Python.Вы должны быть в состоянии легко адаптировать это к C #.
#!/usr/bin/python
import pygtk
pygtk.require('2.0')
import gtk
if __name__ == "__main__":
window = gtk.Window()
box = gtk.HBox()
textview1 = gtk.TextView()
textview2 = gtk.TextView()
hadjustment = None
vadjustment = None
for textview in (textview1, textview2):
sw = gtk.ScrolledWindow()
# don't show the scrollbars on these sub-scrolledwindows
sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER)
sw.add(textview)
# use the first scrolledwindow's adjustments
if hadjustment is None:
hadjustment = sw.get_hadjustment()
else:
sw.set_hadjustment(hadjustment)
if vadjustment is None:
vadjustment = sw.get_vadjustment()
else:
sw.set_vadjustment(vadjustment)
box.pack_start(sw, padding=5)
buffer = textview.get_buffer()
buffer.set_text("If a widget has native scrolling abilities,\n"
" it can be added to the gtk.ScrolledWindow\n"
"with the gtk.Container.add() method. If a\n"
"widget does not, you must first add the\n"
"widget to a gtk.Viewport, then add the\n"
"gtk.Viewport to the scrolled window. The\n"
"convenience method add_with_viewport() does\n"
"exactly this, so you can ignore the presence\n"
"of the viewport.")
# this scrolled window will encompass the rest and have scrollbars
main_sw = gtk.ScrolledWindow(hadjustment, vadjustment)
main_sw.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_ALWAYS)
main_sw.add(box)
window.add(main_sw)
window.show_all()
gtk.main()