Управление порядком вкладок в Visual Studio 2010

#winforms #visual-studio-2010 #tab-ordering

#winforms #visual-studio-2010 #порядок вкладок

Вопрос:

Есть ли простой способ изменить порядок вкладок элементов управления в сложной форме в конструкторе форм Visual Studio.

Я знаю, что могу выбрать режим порядка вкладок, и он показывает мне все элементы управления с их индексом табуляции, но добавлять новый элемент управления в середине сложной формы очень сложно, и приходится заново выбирать КАЖДЫЙ элемент управления в форме, чтобы установить новый порядок вкладок. Я часто обнаруживаю, что случайно пропустил элемент управления, и поэтому мне приходится делать это снова и снова.

Я прочитал в MSDN, что, по крайней мере, должно быть возможно щелкнуть Ctrl на элементе управления, предшествующем тому, где я хочу начать переупорядочение нового элемента управления, а затем щелкнуть по каждому элементу после этого, чтобы установить новый порядок табуляции, но я не могу заставить это работать. Нажатие Ctrl на предыдущий элемент управления просто устанавливает для него значение Tab Index 0, и это становится новым первым элементом управления во всей форме.

Я родом из delphi, и в delphi при редактировании порядка вкладок элементов управления появляется диалоговое окно, в котором отображается список всех элементов управления в форме, и вы можете выбрать элемент управления из списка и переместить его вверх или вниз по списку. Намного проще для простого изменения, такого как смена порядка вкладок или добавление нового элемента управления в середину формы. Возможно, я что-то упускаю, и это можно легко сделать. Если в Visual Studio недоступно, есть ли надстройка, имитирующая функциональность delphi.

С уважением, Брайан

Комментарии:

1. Не могли бы вы создать пользовательские элементы управления, которые служат более крупными компонентами вашей формы, которые легче упорядочить?

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

3. Да, это, вероятно, лучший способ сделать это, но, к сожалению, это большой проект, который существовал некоторое время, прежде чем я увлекся множеством форм, которые были выполнены без преимущества группировки. Много работы, чтобы изменить все это.

4. Я знаю, что это немного старый вопрос.. но вы можете попробовать этот аддон.. Отказ от ответственности — я автор этого дополнения. codecanyon.net/item/winforms-tab-index-addin /…

Ответ №1:

Если вы добавите новый элемент управления и присвоите ему используемое значение порядка вкладок, Visual Studio автоматически заменит остальные. Оба элемента управления будут иметь одинаковый порядок вкладок, но он будет работать.

Комментарии:

1. Попробовал это, и я думаю, что это, вероятно, проще всего сделать на данный момент. Я был немного обеспокоен конфликтом двух элементов управления с одинаковым порядком вкладок, но, похоже, все работает нормально. Спасибо.

2. я рад, что помог вам. Если нужна какая-либо другая помощь, просто дайте мне знать.

3. Я только что столкнулся с этой проблемой, и Visual Studio 2010 НЕ перенумеровывает остальные. Я знаю, что MS известна тем, что ломает вещи, которые работают, но это новый минимум — это работает еще с VB2, и теперь мы больше не можем на это полагаться. 🙁

Ответ №2:

Самый простой способ изменить порядок вкладок, если у вас слишком много элементов управления, просто откройте PROJECT.RC файл в текстовом режиме и найдите, где находится диалоговое окно настройка …. например:

 IDD_MESSAGE_LIST DIALOG 0, 0, 197, 162
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Message List"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,85,140,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,140,140,50,14
    CONTROL         "List1",IDC_MESSAGE_LIST,"SysListView32",WS_BORDER | WS_GROUP,5,5,165,120
    CONTROL         "",IDC_LINE,"Static",SS_ETCHEDHORZ,5,130,190,1
    CONTROL         "",IDC_CHECK_ALL,"Static",SS_BLACKFRAME | NOT WS_VISIBLE,175,5,5,5
    CONTROL         "Tree1",IDC_MESSAGE_TREE,"SysTreeView32",TVS_HASBUTTONS | WS_BORDER 
END
  

Между BEGIN и END ваши элементы управления УПОРЯДОЧЕНЫ по их ПОРЯДКУ ВКЛАДОК. Просто переместите строку, соответствующую нужному ПОРЯДКУ ВКЛАДОК. Просто поменяйте местами первые две строки, и это будет кнопка Отмены в порядке табуляции 1.

Комментарии:

1. Интересно, почему Microsoft просто не отображает индекс строки элемента управления на странице свойств элемента управления…

Ответ №3:

Поскольку вы указываете, что перестановка форм не является вариантом, вы можете рассмотреть возможность использования старого метода из CodeProject: автоматическое управление порядком вкладок во время выполнения для Windows Forms. Он немного устарел (например, нет строго типизированных общих коллекций), но работает довольно хорошо.

TabOrderManager.cs Из проекта можно скомпилировать самостоятельно, вам (мне) не нужны все атрибуты сопутствующего IExtenderProvider и тестового проекта.

Если форма нуждается в изменении, вы можете просто добавить новые элементы управления и ниже InitializeComponent(); добавить вызов, например

 new TabOrderManager(this).SetTabOrder(TabOrderManager.TabScheme.DownFirst);
  

Надеюсь, это вам подходит.

Комментарии:

1. Спасибо за ссылку на это. Я рассмотрю этот вариант для более долгосрочного решения в зависимости от моих потребностей. На данный момент лучшим решением для моих насущных потребностей было просто вручную установить индекс табуляции для моих новых элементов управления.