Инструмент WinForms TabOrder: сломан или просто сбивает с толку? - PullRequest
4 голосов
/ 17 июня 2010

У меня есть форма с кучей панелей и некоторыми панелями внутри групповых блоков.При использовании инструмента TabOrder в Vs2005 элементам управления вне контейнеров задаются целые числа (0), элементам управления внутри панелей задаются десятичные дроби (72.0), а элементам управления внутри панелей внутри групповых блоков задаются значения из трех частей (73.73.0).К сожалению, результирующий порядок вкладок не имеет ничего общего с порядком, по которому я щелкал мои элементы управления.

Этот инструмент просто не поддерживает вложенные контейнеры?Я делаю что-то неправильно?Возможно, удерживая Shift или Ctrl, когда я нажимаю (я пробовал это безуспешно)?

Буду ли я вынужден вручную вводить в трех частях табуляции для всех моих элементов управления?Это был бы облом.

Ответы [ 5 ]

7 голосов
/ 17 июня 2010

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

Числа не являются десятичными; они представляют порядок табуляции элемента управления в его родительском контейнере. Например, если у вас есть форма с Panel с именем panel1 и Button внутри нее с именем button1, тогда button1 будет отображать число типа:

X.Y
  • X - это порядок табуляции panel1
  • Y - это порядок табуляции button1 в пределах panel1.

Я признаю, что дизайнер не настолько интуитивен (или прозрачен), как это должно быть, но он работает.

2 голосов
/ 10 апреля 2013

У меня была такая же проблема с текстовыми полями и кнопками внутри группового поля в VS2010. Инструмент TabOrder был просто бесполезен: ордера табуляции нарушались независимо от того, как я переупорядочивал табуляторы. Чтобы сделать правильный порядок табуляции, мне пришлось изменить порядок добавления элементов управления в групповой блок в коде инициализации дизайнера форм:

this.groupBox2.Controls.Add(this.startTimeTextBox);
this.groupBox2.Controls.Add(this.endTimeTextBox);
this.groupBox2.Controls.Add(this.exitButton);

В этом случае порядок вкладок будет следующим: startTimeTextBox -> endTimeTextBox -> exitButton и т. Д.

0 голосов
/ 12 октября 2015

Удалить Групповые поля из Элементы управления и попробуйте еще раз, это работает для меня :)

0 голосов
/ 06 ноября 2012

У меня была такая же проблема, и я обнаружил этот инструмент: http://archive.msdn.microsoft.com/cdstabindex

Мне пришлось изменить манифест, чтобы он работал с VS2010.Кроме того, я изменил исходный код для себя, чтобы сделать интерфейс немного лучше, но, несмотря на это, я бы рекомендовал взглянуть на этот инструмент.

0 голосов
/ 17 июня 2010

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

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

...