2015-05-30 2 views
0

У меня есть RichTextBox, кнопка и поле списка с привязкой к вершине, внизу, справа.
Всякий раз, когда я изменяю размер формы, а затем меняю родительский (с одной вкладки TabControl на другой), их позиция перепуталась.Fix Anchoring при смене родителя

http://imgur.com/WiQhRJU,FyFIQTL,7K7HMTt,Nqrm20y

Первое изображение: Перед тем как изменить размер ✓
Второго изображения: После повторного размера ✓
Третьего изображения: После повторного размера на разных вкладках ✖
Четвертого изображения: Switched назад к исходной вкладке ✖

Это код, я использую, чтобы изменить родителя:

private void tabTabs_Selected(object sender, TabControlEventArgs e) 
{ 
    if (tabTabs.SelectedTab == tabChat || tabTabs.SelectedTab == tabCmd) 
    { 
     lstUsers.Parent = tabTabs.TabPages[tabTabs.SelectedIndex]; 
     rtbSend.Parent = tabTabs.TabPages[tabTabs.SelectedIndex]; 
     btnSend.Parent = tabTabs.TabPages[tabTabs.SelectedIndex]; 
    } 
} 
+0

Часто обновление обновляет новый макет. – TaW

ответ

0

Я знаю, что я опоздал на год, но у меня была такая же проблема с вкладками и привязкой. Как я исправил это, добавив панель, содержащую все элементы и установив Dock to Fill. Затем, только изменив родительский элемент контейнера, он работал безупречно. На самом деле это ошибка, о которой следует сообщать в MS, но пока это обходное решение работает чудесно.

Редактирование: вы также можете уменьшить/удалить щелчок при изменении вкладок путем двойной буферизации всех элементов управления, включая группу вкладок, страницы вкладок, панели контейнеров и все элементы внутри панели контейнера.

0

Т его довольно необычный способ сделать пользовательский интерфейс. Не то, чтобы это было неправильно, но я думаю, что вы сталкиваетесь с одной из многих потенциальных трудностей, которые создает этот проект.

Основная проблема заключается в том, что вы повторно используете элементы пользовательского интерфейса для различных функций. Поле чата становится полем команд на другой вкладке, кнопка «отправить» отправляет сообщения чата на одной вкладке и команды на другой вкладке и т. Д. Каждый раз, когда вы переключаете вкладки, вы должны быть очень осторожны, чтобы делать много очистки дома и сделать это правильно. Это звучит слишком сложно.

Большинство пользовательских интерфейсов будут разработаны с использованием нескольких текстовых полей, кнопок и т. Д., По одному для каждой вкладки. Каждое текстовое поле или кнопка будут служить одной цели. Если вам нужно несколько разных элементов, чтобы выглядеть и вести себя одинаково, вы можете использовать стили, шаблоны или создавать свои собственные UserControls, чтобы облегчить это.

Исключением из этого правила будет ваш список зрителей. Похоже, что всегда остается неизменным независимо от того, на какой вкладке вы находитесь. Если бы это был я, у меня был бы только один экземпляр списка зрителей, но я бы не добавил его в элемент управления вкладкой. Я бы просто поместил его рядом с элементом управления вкладками, чтобы вы всегда могли его видеть.

+0

Коробка с командами и чатом является отдельной, но я вижу, что вы имеете в виду о кнопке и текстовом поле – Jorge