Как сделать так, чтобы строка состояния не закрывала мой RichTextBox?

там! Я создаю программу, подобную блокноту (гораздо более продвинутую), и меня что-то беспокоит...

В Notepad++ и Notepad Status Bar расположен сразу под границей RichTextBox/TextBox. БУКВАЛЬНО ПОД НИМ.

Я поместил Status Bar в свою форму и добавил элементы управления (Lines, Line, Column, FileSize...), но я все еще не могу заставить его оставаться под RichTextBox, чтобы он не блокировал просмотр текста пользователем.

Для ПРИМЕР...

У меня есть RichTextBox, и пользователь загружает в него огромный файл. Они прокручиваются до самого низа, и последние одна или две строки закрываются Status Bar.

Я хочу, чтобы он оставался ниже RichTextBox, чтобы он не блокировал представление пользователя. Это кажется неаккуратным и заставит моих клиентов требовать возмещения.


person Momoro    schedule 19.10.2019    source источник
comment
i.ibb.co/jz84jBx/Capture.png — это мой макет. Как видите, строка состояния закрывает одну или две последние строки RichTextBox. :(   -  person Momoro    schedule 20.10.2019


Ответы (1)


При закреплении элементов управления внутри контейнера приоритет закрепленного элемента управления над другим регулируется с помощью их z-порядка. Элемент управления с более высоким приоритетом (более низкая позиция в z-порядке) имеет приоритет в макете над элементами управления с более низким приоритетом (более высокая позиция в z-порядке).

Управляет приоритетом стыковки

См. также раздел «Примечания» в Control.Dock. Свойство.

Чтобы назначить более высокий приоритет, щелкните правой кнопкой мыши закрепленный элемент управления и выберите SendToBack.
При выборе BringToFront вместо этого назначается более низкий приоритет.

В этом конкретном случае незакрепленный RichTextBox был скрыт элементом управления StatusBar (не StatusStrip, есть небольшая разница в том, как z-порядок назначается этим двум элементам управления), который прикреплен к Bottom как по умолчанию.
Решение состоит в том, чтобы закрепить элемент управления RichTextBox, присвоить ему более низкий приоритет, щелкнув его правой кнопкой мыши и выбрав BringToFront.
Повторите операцию с элементом управления StatusBar, выбрав в данном случае SendToBack. Это приведет к тому, что StatusBar займет всю нижнюю часть своего контейнера формы, а элемент управления RichTextBox займет оставшееся пространство.
Два элемента управления больше не перекрываются, и макет не нарушается при изменении размера формы.

person Jimi    schedule 20.10.2019
comment
Помечено как ответ! - Хотя... Это как-то странно.. Как ты можешь вывести его на передний план, а отправить на задний...? Или это обман зрения...? Хе... :D - person Momoro; 20.10.2019
comment
Прочитайте еще раз первую часть: когда вы SendToBack управляете, вы назначаете ему более низкий z-порядок. Элементы управления с более низким z-порядком имеют более высокий приоритет по сравнению с другими элементами управления в том же стеке. Сначала это может показаться нелогичным, учитывая, что у вас (очевидно) другое поведение, когда элементы управления не закреплены. Просто подумайте, как этот параметр изменяет z-порядок элементов управления и как это интерпретируется в каждом контексте. - person Jimi; 20.10.2019